【发布时间】:2018-08-31 18:29:50
【问题描述】:
我有一个简单的Sracpy 蜘蛛,它将域中的所有页面导出到单个 csv 文件。大多数人建议为每个站点编写不同的爬虫,但考虑到我要求的信息非常简单,我认为弄清楚如何遍历域列表是有意义的。最终会有数千个我想从中获取链接的域,所有域都有非常不同的结构,所以我希望蜘蛛能够扩展。
以下是蜘蛛从中提取域的 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:/listofdomains.csv'
open_list = pd.read_csv(file_path)
urlorgs = open_list.urls.tolist()
open_list2 = pd.read_csv(file_path)
domainorgs = open_list2.domain.tolist()
class Nonprof(CrawlSpider):
name = "responselist"
allowed_domains = domainorgs
start_urls = urlorgs
rules = [
Rule(LinkExtractor(
allow=['.*']),
callback='parse_item',
follow=True)
]
def parse_item (self, response):
item = NonprofItem()
item['responseurl'] = response.url
yield item
运行蜘蛛时我没有收到明显的错误,但它似乎没有产生任何结果:[scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
所以我有几个问题: 1.scrapy能处理这样的请求吗? 2. 有没有更好的方法让蜘蛛遍历域列表并匹配 start_url?
【问题讨论】:
-
请从您的 CSV 文件中显示几行
-
@gangabass 进行了建议的修改
标签: python python-3.x web-scraping scrapy