Dav*_*son 5 python web-crawler scrapy scrape
我正在尝试使用scrapy爬行网站,但是该网站没有站点地图或页面索引。如何抓取抓取网站的所有页面?
我只需要下载网站的所有页面,而无需提取任何项目。我是否只需要设置“蜘蛛规则”中的所有链接?但是我不知道scrapy是否会以这种方式避免重复的url。
在您的 中Spider,定义allowed_domains为您要爬网的域列表。
class QuotesSpider(scrapy.Spider):
name = 'quotes'
allowed_domains = ['quotes.toscrape.com']
Run Code Online (Sandbox Code Playgroud)
然后您可以使用response.follow()以下链接。请参阅Spiders 文档和教程。
或者,您可以使用 a 过滤域LinkExtractor(如David Thompson 提到的)。
from scrapy.linkextractors import LinkExtractor
class QuotesSpider(scrapy.Spider):
name = 'quotes'
start_urls = ['http://quotes.toscrape.com/page/1/']
def parse(self, response):
for quote in response.css('div.quote'):
yield {
'text': quote.css('span.text::text').get(),
'author': quote.css('small.author::text').get(),
'tags': quote.css('div.tags a.tag::text').getall(),
}
for a in LinkExtractor(allow_domains=['quotes.toscrape.com']).extract_links(response):
yield response.follow(a, callback=self.parse)
Run Code Online (Sandbox Code Playgroud)