目标:爬取scrapy给的目标网站的名言名句
代码:
# -*- coding: utf-8 -*- import scrapy from quotetutorial.items import QuoteItem class QuotesSpider(scrapy.Spider): name = 'quotes' allowed_domains = ['http://quotes.toscrape.com/'] start_urls = ['http://quotes.toscrape.com/'] def parse(self, response): quotes = response.css('.quote') for quote in quotes: item = QuoteItem() text = quote.css('.text::text').extract_first() item['text'] = text yield item next = response.css('.pager .next a::attr(href)').extract_first() url = response.urljoin(next) yield scrapy.Request(url=url,callback=self.parse)
真正需要输入的函数仅再parse里面
学到的scrapy命令:
scrapy startproject project_name -- 创建一个爬虫项目
scrapy genspider spider_name quotes.toscrape.com/ -- 创建爬虫文件
scrapy shell quotes.toscrape.com/ -- 进入shell试调
scrapy crawl spider_name --- 开始爬取 -o 可以输出文件 一般为json 另外 没有txt
遇到的问题:
1)url并没有回溯,只爬取到第一页的内容。
解决办法:在命令行设置url参数的时候 不要带 http:// 如果带入httpscrapy又会自动加上http:// 则url会失效
scrapy genspider spider_name xxx.com