2018-08-12

Scrapy学习

《精通Scrapy网络爬虫》第八章--仅作为本人学习笔记,如有侵权,请私信我删除

1、项目需求

爬取http://books.toscrape.com/中的书籍信息,包括

书名

价格

评价等级

产品编码

库存量

评价数量

将爬取的结果保存到CSV文件中

2、页面分析

除了使用F12之外,可以使用scrapy shell命令

使用之前要安装好pip install pypiwin32

在此环境下常用的变量

*request

最近一次下载对应的Request对象

*response

最近一次下载对应的Response对象

*fetch(req_or_url)

该函数用于下载页面,可传入一个Request对象或url字符串,调用后会更新变量request和response

*view(response)

该函数用于在浏览器中显示response中的页面

>>>view(response)

跟在浏览器打开的页面一样,但是这个是由Scrapy爬虫下载的页面,使用view函数更加可靠

(我的理解就是:可以一步步看自己提取信息的命令是否正确,不必像普通爬虫那样写好爬虫代码准备爬取大量信息的时候报错才知道自己的提取命令写得不对)

>>>sel = response.css('div.product_main')

>>>sel.xpath('./h1/text()').extract_first()

'A Light in the Attic'

>>>sel.css('p.price_color::text').extract_first()

'£51.77'

>>>sel.css('p.star-rating::attr(class)').re_first('star-rating([A-Za-z]+)')

'Three'

把自己要提取的信息都尝试一遍

分析完书籍页面后接着分析如何再书籍列表页面中提取每一个书籍页面的链接

(使用fetch函数要先关闭terminal重启scrapy shell)

用fetch函数下载第一个书籍列表页面,下载完后再调用view函数在浏览器中查看页面

>>>fetch('http://books.toscrape.com/')

>>>view(response)

链接可在每个

中找到

使用LinkExtractor提取链接


2018-08-12_第1张图片


2018-08-12_第2张图片

完成分析工作

3、编码实现

创建一个Scrapy项目,取名为toscrape_book

scrapy startproject toscrape_book

通常我们不需要手工创建Spider文件以及Spider类

cd toscrape_book

scrapy genspider books books.toscrape.com

两个参数分别为Spider的名字和所要爬取的域(网站)


2018-08-12_第3张图片


2018-08-12_第4张图片

自动生成的两个东西都在


2018-08-12_第5张图片

定义封装书籍信息的类

实现Spider之前先定义封装书籍信息的Item类


2018-08-12_第6张图片

分5步完成BookSpider

*继承Spider创建BookSpider类  *为Spider取名  *指定起始爬取点 (都已完成)          

*实现书籍列表页面的解析函数      

*实现书籍页面的解析函数  


2018-08-12_第7张图片



2018-08-12_第8张图片

指定各列次序


2018-08-12_第9张图片



2018-08-12_第10张图片



2018-08-12_第11张图片


完成倒是完成了,但是数据并没有1000条


2018-08-12_第12张图片

回去再找问题吧,吃了一下午的二手烟了


自己依旧笨

终于找到了,因为是隔一行的,所以就那么多了;就那么点代码,还能是哪错呢。[摊手.emoji]


你可能感兴趣的:(2018-08-12)