开启Scrapy项目之旅之:编写自动爬取网页的爬虫(当当为例)
1、创建一个爬虫项目
scrapy startproject autopjt
2、编写items.py文件
我们只关注商品名、商品价格、商品链接、评论数
3、编写好items.py文件后,还需要对爬取到的数据经进一步处理,比如存储到json文件中,于是此时编写pipelines.py文件实现。
4、settings的编写
a、打开settings.py文件进行pipelines部分相应设置
因为pipelines默认是关闭的,所以我们通过上面的设置才能将其开启,pipelines文件才会生效。
b、进行cookies部分相应设置
将cookie设置为False,对方的服务器就无法根据Cookie信息对我们进行识别及屏蔽了。
c、设置robots规则此时,爬虫项目不遵循robots.txt规则进行爬取,此时就不会出现“Forbidden by robots.txt”
5、处理好items.py、pipelines.py、setting.py后,
我们就开始进行最重要模块爬虫文件部分的编写了
cd autopjt #进入项目目录
#创建爬虫文件,依据模板basic
scrapy genspider -t basic autospd dangdang.com
6、分析爬取当当URL
打开地方特产第一页:
http://category.dangdang.com/cid10010056.html
第二页
http://category.dangdang.com/pg2-cid10010056.html
第三页
http://category.dangdang.com/pg3-cid10010056.html
我们发现第二页和第三页存在规律,可是第一页不太一样,我们访问
http://category.dangdang.com/pg1-cid10010056.html
一样可以进入第一页
规律:
http://category.dangdang.com/pg[第几页]-cid10010056.html
发现规律后,我们就可以使用for循环自动爬取下来。
7、分析源码归纳唔系商品信息的XPath表达式
#商品名的xpath表达式
"//a[@class='pic']/@title"
上面的意思是提取网页中所有的
–>class属性为pic-
->a标签中
–>title属性的值
#商品价格的xpath表达式
“//span[@class='price_n']/text()”
#商品链接的xpath表达式
"//a[@class='pic']/@href"
#商品评论的xpath表达式
"//a[@dd_name='单品评论']/text()"
9、调试与运行
scrapy crawl autospd --nolog #运行
10、查看mydata.json,得到结果
此时,一行是一页商品的数据
太过于杂乱
我们这时想要每一行存储一个商品的信息
对pipelines.py处理
执行命令scrapy crawl autospd --nolog
成功!