【发布时间】:2014-01-09 06:19:01
【问题描述】:
我看到了这个链接 [a link] (Pass Scrapy Spider a list of URLs to crawl via .txt file)! 这会更改开始 url 的列表。我想为每个域(从一个文件)抓取网页并将结果放入一个单独的文件(以域命名)。 我已经为一个网站抓取了数据,但我已经在蜘蛛本身中指定了起始 url 和 allowed_domains 。如何使用输入文件进行更改。
更新 1:
这是我尝试过的代码:
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item, Field
class AppleItem(Item):
reference_link = Field()
rss_link = Field()
class AppleSpider(CrawlSpider):
name = 'apple'
allowed_domains = []
start_urls = []
def __init__(self):
for line in open('./domains.txt', 'r').readlines():
self.allowed_domains.append(line)
self.start_urls.append('http://%s' % line)
rules = [Rule(SgmlLinkExtractor(allow=()), follow=True, callback='parse_item')]
def parse_item(self, response):
sel = HtmlXPathSelector(response)
rsslinks = sel.select('//a[contains(@href, "pdf")]/@href').extract()
items = []
for rss in rsslinks:
item = AppleItem()
item['reference_link'] = response.url
item['rss_link'] = rsslinks
items.append(item)
filename = response.url.split("/")[-2]
open(filename+'.csv', 'wb').write(items)
运行此命令时出现错误:AttributeError: 'AppleSpider' object has no attribute '_rules'
【问题讨论】: