我正在使用最新版本的scrapy (http://doc.scrapy.org/en/latest/index.html),并试图找出如何使scrapy仅爬取作为start_url列表的一部分提供的URL。在大多数情况下,我只想爬取一页,但在某些情况下,可能会有多个页面,我将指定这些页面。我不希望它爬到其他页面。
我尝试设置深度级别=1,但我不确定在测试中是否实现了我所希望的目标。
非常感谢您的帮助!
谢谢!
2015-12-22 - 代码更新:
我尝试设置深度级别=1,但我不确定在测试中是否实现了我所希望的目标。
非常感谢您的帮助!
谢谢!
2015-12-22 - 代码更新:
# -*- coding: utf-8 -*-
import scrapy
from generic.items import GenericItem
class GenericspiderSpider(scrapy.Spider):
name = "genericspider"
def __init__(self, domain, start_url, entity_id):
self.allowed_domains = [domain]
self.start_urls = [start_url]
self.entity_id = entity_id
def parse(self, response):
for href in response.css("a::attr('href')"):
url = response.urljoin(href.extract())
yield scrapy.Request(url, callback=self.parse_dir_contents)
def parse_dir_contents(self, response):
for sel in response.xpath("//body//a"):
item = GenericItem()
item['entity_id'] = self.entity_id
# gets the actual email address
item['emails'] = response.xpath("//a[starts-with(@href, 'mailto')]").re(r'mailto:\s*(.*?)"')
yield item
在第一次回复中,您提到使用通用爬虫---这不是我在代码中正在做的吗?此外,您是否建议我删除
callback=self.parse_dir_contents
从parse函数中获取?
谢谢。