我有一个用于电子邮件提取的python bot,它使用此单个查询进行查询和谷歌搜索,然后返回使用查询找到的电子邮件列表,我需要将结果视为一个,并使用for循环进行多个查询并将找到的电子邮件列表作为字符串插入每个单元格。请知道如何做到这一点。这是抓取代码
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
# create class to extract email ids
class email_extractor(CrawlSpider):
# adjusting parameters
name = 'email_ex'
def __init__(self, *args, **kwargs):
super(email_extractor, self).__init__(*args, **kwargs)
self.email_list = []
**self.query = " 'Students with infectious disease, Rome, Italy' "**
def start_requests(self):
for results in search(self.query, num=10, stop=10, 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()
目前,这项工作为一个单一的查询,想循环多个查询,有什么想法吗?
我不认为多个查询会这样做,相反,我认为你应该使用连接函数创建一个查询,以创建多个数据的单个查询。因为我不知道你使用的是什么数据库,你应该寻找一个信息,其中你可以计算查询中的行数,并使每一行变成元组/列表,然后从中创建你的循环。