Python 3.x Scrapy在起始URL和域中进行迭代
我试图从csv中读取URL和域列表,并让Python 3.x Scrapy在起始URL和域中进行迭代,python-3.x,pandas,scrapy,scrapy-spider,Python 3.x,Pandas,Scrapy,Scrapy Spider,我试图从csv中读取URL和域列表,并让Scrapyspider遍历域列表和启动URL,目标是通过我的管道将该域中的所有URL导出为csv文件 import scrapy from scrapy.spiders import CrawlSpider, Rule from scrapy.linkextractors import LinkExtractor from NONPROF.items import NonprofItem from scrapy.http import Request i
Scrapy
spider遍历域列表和启动URL,目标是通过我的管道将该域中的所有URL导出为csv文件
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from NONPROF.items import NonprofItem
from scrapy.http import Request
import pandas as pd
file_path = 'C:/csv'
open_list = pd.read_csv(file_path)
urlorgs = open_list.http.tolist()
open_list2 = pd.read_csv(file_path)
domainorgs = open_list2.domain.tolist()
class Nonprof(CrawlSpider):
name = "responselist"
for domain in domainorgs:
allowed_domains = [domain]
for url in urlorgs:
start_urls = [url]
rules = [
Rule(LinkExtractor(
allow=['.*']),
callback='parse_item',
follow=True)
]
def parse_item (self, response):
item = NonprofItem()
item['responseurl'] = response.url
yield item
当我运行爬行器时,它会给我一个缩进错误,或者当我调整缩进时,它只会识别列表中的最后一个域
对于如何实现这一目标的任何建议,我们都表示感谢 你粘贴的这段代码有可怕的缩进,我并不奇怪解释器会抱怨。但这很可能是你的问题:
allowed_domains = [domain]
它创建一个只包含一个域的新列表,并将其分配给允许的\u域
。所以最后一个域覆盖了以前保存在那里的所有内容。通过执行以下操作进行修复:
allowed_domains = []
for domain in domainorgs:
allowed_domains += [domain]
甚至像这样(没有循环):
你粘贴的代码有很糟糕的缩进,我并不奇怪解释器会抱怨。但这很可能是你的问题:
allowed_domains = [domain]
它创建一个只包含一个域的新列表,并将其分配给允许的\u域
。所以最后一个域覆盖了以前保存在那里的所有内容。通过执行以下操作进行修复:
allowed_domains = []
for domain in domainorgs:
allowed_domains += [domain]
甚至像这样(没有循环):
修复缩进并尝试以下操作:
for domain in domainorgs:
allowed_domains.append(domain)
for url in urlorgs:
start_urls.append(url)
修复缩进并尝试以下操作:
for domain in domainorgs:
allowed_domains.append(domain)
for url in urlorgs:
start_urls.append(url)
也许你可以共享stacktrace,这样我们就可以看到缩进错误在哪里?也许你可以共享stacktrace,这样我们就可以看到缩进错误在哪里?使用append I get
NameError:name“allowed_domains”没有定义,所以它不能将allowed_domains识别为Scrapy中的函数。使用append I getNameError:name“allowed_domains”未定义
,因此无法将allowed_domains识别为Scrapy中的函数。