【发布时间】:2022-10-24 08:31:53
【问题描述】:
我正在尝试查找电子邮件 ID,我有一个列表,我想一个接一个地传递多个搜索查询,但是当我尝试在显示我和缩进错误中使用列表时,谁能帮我解决这个问题?
我的代码在这里:
import scrapy
from scrapy.spiders import CrawlSpider, Request
from googlesearch import search
import re
from scrapy_selenium import SeleniumRequest
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import openpyxl
wb = openpyxl.load_workbook("")
sh = wb.active()
class email_extractor(CrawlSpider):
name = 'email_ex'
def __init__(self,query, *args, **kwargs):
super(email_extractor, self).__init__(*args, **kwargs)
self.email_list = []
self.query = query
# sending requests
def start_requests(self):
for results in search(self.query, num=10, stop=None, pause=2):
yield SeleniumRequest(
url=results,
callback=self.parse,
wait_until=EC.presence_of_element_located(
(By.TAG_NAME, "html")),
dont_filter=True
)
# extracting emails
def parse(self, response):
EMAIL_REGEX = r'[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+'
emails = re.finditer(EMAIL_REGEX, str(response.text))
for email in emails:
self.email_list.append(email.group())
for email in set(self.email_list):
yield{
"emails": email
}
self.email_list.clear()
我想在 search_query=['info' 'contact' , 'sales','marketing','market places'] 中传递包含多个域的列表 谁能帮我找到解决方案?
【问题讨论】:
-
请发布您收到的完整回溯和错误消息
-
不是错误代码工作正常我只是想知道如何使用 for 循环一次搜索查询列表?可以将此代码修改为类似的内容吗?
-
它已经这样做了... start_requests 方法中的 for 循环返回一个序列,for 循环遍历序列中的每个项目。
-
不,我在请求中的 for 循环是查找一个查询的 url 并将 selenium req 传递给它们,但是当构造函数被实例化时会调用搜索查询。
-
我不明白你在问什么...请尝试澄清
标签: python selenium web-scraping scrapy google-search