import scrapy
from scrapy.spiders.crawl import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class MySpider(CrawlSpider):
name = 'genericSpider'
allowed_domains = ['example.com']
start_urls = [url_1, url_2, url_3]
rules = [
Rule(
LinkExtractor(),
callback='parse',
follow=True
),
]
def parse(self, response):
hxs = scrapy.Selector(response)
links = hxs.xpath('*//a/@href').extract()
for link in links:
print(link)
print()我正在尝试抓取一个网站。以我的代码为例,我只是提取所有链接并将它们打印到终端。
这个过程对start_urls中的urls非常有效,但是爬虫似乎不会抓取提取的urls。
这就是CrawlSpider的意义所在,对吗?访问一个页面,收集它的链接,并访问所有这些链接,直到它耗尽它们?
我已经被困了几天了,任何帮助都是最好的。
发布于 2019-04-24 16:48:20
问题是您将方法命名为parse。根据documentation,在使用CrawlSpider的情况下应避免使用此名称,因为它会导致问题。只需将该方法重命名为parse_link (并调整Rule中的callback参数),它就可以工作了。
此外,请记住,allowed_domains属性必须与您要搜索的URL相匹配。
https://stackoverflow.com/questions/55825722
复制相似问题