美文网首页
2018-08-12

2018-08-12

作者: 咖喱魚旦餐蛋面 | 来源:发表于2018-08-12 17:31 被阅读0次

Scrapy学习

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

1、项目需求

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

书名

价格

评价等级

产品编码

库存量

评价数量

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

2、页面分析

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

使用之前要安装好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)

链接可在每个<article class="product_pod">中找到

使用LinkExtractor提取链接



完成分析工作

3、编码实现

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

scrapy startproject toscrape_book

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

cd toscrape_book

scrapy genspider books books.toscrape.com

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


自动生成的两个东西都在

定义封装书籍信息的类

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

分5步完成BookSpider

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

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

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

指定各列次序

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

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

自己依旧笨

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

相关文章

网友评论

      本文标题:2018-08-12

      本文链接:https://www.haomeiwen.com/subject/ngjsbftx.html