开启Scrapy项目之旅之:编写自动爬取网页的爬虫(当当为例)

1、创建一个爬虫项目

scrapy startproject autopjt

2、编写items.py文件
我们只关注商品名、商品价格、商品链接、评论数
开启Scrapy项目之旅之:编写自动爬取网页的爬虫(当当为例)

3、编写好items.py文件后,还需要对爬取到的数据经进一步处理,比如存储到json文件中,于是此时编写pipelines.py文件实现。
开启Scrapy项目之旅之:编写自动爬取网页的爬虫(当当为例)

4、settings的编写

a、打开settings.py文件进行pipelines部分相应设置
开启Scrapy项目之旅之:编写自动爬取网页的爬虫(当当为例)
因为pipelines默认是关闭的,所以我们通过上面的设置才能将其开启,pipelines文件才会生效。

b、进行cookies部分相应设置
开启Scrapy项目之旅之:编写自动爬取网页的爬虫(当当为例)
将cookie设置为False,对方的服务器就无法根据Cookie信息对我们进行识别及屏蔽了。

c、设置robots规则
开启Scrapy项目之旅之:编写自动爬取网页的爬虫(当当为例)此时,爬虫项目不遵循robots.txt规则进行爬取,此时就不会出现“Forbidden by robots.txt”

5、处理好items.pypipelines.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()"

8、编写爬虫文件autospd.py
开启Scrapy项目之旅之:编写自动爬取网页的爬虫(当当为例)

9、调试与运行

scrapy crawl autospd --nolog #运行

10、查看mydata.json,得到结果

开启Scrapy项目之旅之:编写自动爬取网页的爬虫(当当为例)

此时,一行是一页商品的数据
太过于杂乱

我们这时想要每一行存储一个商品的信息
对pipelines.py处理

开启Scrapy项目之旅之:编写自动爬取网页的爬虫(当当为例)
执行命令scrapy crawl autospd --nolog
开启Scrapy项目之旅之:编写自动爬取网页的爬虫(当当为例)成功!