【发布时间】:2018-01-05 20:27:46
【问题描述】:
我正在尝试使用“Scrapy”包创建一个蜘蛛,它获取 URL 列表并抓取它们。我已经在 stackoverflow 中搜索了答案,但找不到可以解决问题的方法。
我的脚本如下:
class Try(scrapy.Spider):
name = "Try"
def __init__(self, *args, **kwargs):
super(Try, self).__init__(*args, **kwargs)
self.start_urls = kwargs.get( "urls" )
print( self.start_urls )
def start_requests(self):
print( self.start_urls )
for url in self.start_urls:
yield Request( url , self.parse )
def parse(self, response):
d = response.xpath( "//body" ).extract()
当我抓取蜘蛛时:
Spider = Try(urls = [r"https://www.example.com"])
process = CrawlerProcess({
'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'
})
process.crawl(Spider)
process.start()
我在打印 self.start_urls 时得到以下信息:
- 在屏幕上打印的__init__函数是: [r"https://www.example.com"](传递给蜘蛛)。
- 在屏幕上打印的start_requests函数是:无
为什么我没有得到?有没有另一种方法来解决这个问题?或者我的蜘蛛课有什么错误吗?
感谢您提供的任何帮助!
【问题讨论】:
-
使用其他名称作为列表以在开始时保留 url -
self.start_urls由scrapy使用,因此它可以删除它们。我想知道您是否将网址放在self.start_urls中的__init__中,那么它可能会使用它们而您不必使用start_requests? -
process.crawl在调用from_crawler时将创建一个不带参数的新 Try 对象。请参阅 Scrapy 源代码中的爬虫类。 github.com/scrapy/scrapy/blob/master/scrapy/…
标签: python scrapy scrapy-spider