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中的URL,但似乎爬虫似乎不会抓取提取的URL。
这是CrawlSpider的重点,对吗?访问页面,收集其链接并访问所有这些链接,直到其用尽?
我被困了几天,任何帮助都会很棒。
答案 0 :(得分:1)
问题是您将方法命名为parse
。根据{{3}},在使用CrawlSpider
时应避免使用此名称,因为它会引起问题。只需将方法重命名为parse_link
(并在callback
中调整Rule
参数),它将起作用。
此外,请记住,allowed_domains
属性必须与您要抓取的URL匹配。