Scrapy爬取小说简单逻辑

 一 准备工作

1)安装Python

2)安装PIP

3)安装scrapy

4)安装pywin32

5)安装VCForPython27.exe

 二 爬虫逻辑

1.CMD终端创建爬虫项目

cd Desktop(返回桌面目录) #选择文件保存位置,我放在了桌面

Scrapy startProject BooksSpider  #BooksSpider为项目名称,自己起名

    (ps:CMD终端显示"rou can start your first spider with:"表示项目创建成功)

2.创建爬虫文件

拖动爬虫项目文件用Pycharm打开,点击左下角Terminal打开终端

scrapy genspider books(蜘蛛名,自定义,不能重复,可以修改但不建议修改) www.qisuu.com(网站域名, 这里以奇书网为例)

3.双击打开爬虫文件(蜘蛛文件.py),在Spiders包中引用可能用到的包

13406307-d6630a8f5c448ab5.png

(ps:文件夹图标中带空心圆为包,只有包才能直接引入,带__init__.py的文件,

没有则表示文件夹)

以下是创建爬虫文件自带:

13406307-294b77df5d35fa8e.png

4.明确爬取目标

以奇书网为例:

1)请求导航条上每个按钮对应页面

2)分别解析每个页面的电子书列表(主要获得电子书详情URL)

3)请求详情URL,解析电子书的详细信息(书名,封面,评分,大小....下载地址)

4)根据下载地址下载电子书到本地

制作爬虫:

在books.py中

13406307-a4c70befa3c4cb48.png

代码中的xpath与正则表达式是一样的,只是用法更加简单方便, 具体操作可百度, 此处不细说.

在items.py文件中

13406307-ae506826e6cb5385.png

这时就可以开始爬虫了, 代码为:

scrapy crawl books -o book.json -s FEED_EXPORT_ENCODING = utf-8

其中 scrapy crawl books 是运行books爬虫程序, -o book.json 为以json格式保存, FEED_EXPORT_ENCODING = utf-8 为编码格式

友情提示: 不要轻易去爬虫,只有确定自己代码没有问题才可以,可以先使用终端测试(cmd),将代码一行一行依次粘贴运行

scrapy shell http://www.qisuu.com

  (ps:利用CMD终端测试,不要轻易去爬虫,成功末尾显示IN[1],然后依次在终端复制粘贴进去

  相关代码,包括相关引入import代码,利用xpath取特定数据可在终端打印查看效果,有时要回

  车两次展示,在目标网站没有反爬虫协议或所需数据极少时可考虑在Terminal直接运行)

如果想要下载至本地:

需要修改settings.py文件

13406307-0fd180ae67da11c5.png

找到ITEM_PIPELINES,大约在67行,做出如上修改,IMAGES_URLS_FIELD获取下载图片的url,IMAGES_STORE新建一个文件夹,用来存放图片 FILES用法鱼IMAGES一致

可能存在的问题,原因及解决方案:

1.网站源代码结构与请求到的代码结构可能不一致

(如tbody只在浏览器渲染的结构中有而请求出来的没有)

解决方案:优化xpath写法,或改用正则表达式

2.请求robots.txt后显示200意为请求到反爬虫协议成功会自动停止爬虫程序

解决方案:设置不遵守robots.txt反爬虫协议,强行进入

3.在请求到某个url显示200成功后却突然自动停止爬虫(closing spider)

可能原因:若显示Filtered offsite request则意为scrapy自动过滤该url把它放入了黑名单

解决方案:在该url代码运行的函数meta字典中加入dont_filter = True默认

True不要过滤,若改为False则是要过滤


以上就是Scrapy爬虫的基本逻辑!

猜你喜欢

转载自blog.csdn.net/weixin_34406086/article/details/91011005