Mr liu jin

python爬虫框架scrapy安装使用


最开始接触爬虫是一次突然想爬取自己的微信朋友圈,然后网上找到教程跟着做,但只爬取自己发的圈子
教程在这里
爬取自己朋友圈上:https://www.jianshu.com/p/3c86e6338bbf
爬取自己朋友圈下:http://blog.51cto.com/13389043/2115616
自己根据教程写的代码在github:https://github.com/5218664b/WebCrawler/tree/master/weixin_moment

数据可视化:https://blog.csdn.net/pdcfighting/article/details/80335563

科普

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,就是一个基于python的爬虫框架
github翻译: https://github.com/marchtea/scrapy_doc_chs
中文文档: https://scrapy-chs.readthedocs.io/zh_CN/latest/
初级使用主要是查看 items,选择器,item pipeline,feed exports,下载项目图片 这些文档

爬虫,在我现在的理解来看不是那么神秘,就是抓取网站的数据到某个地方,然后进行分析或者别的用途。

eg:抓取500px网站的图片做素材;一些小说网站不提供txt下载但是可以观看,可以通过爬虫把内容爬取到本地的txt文件;爬取微信朋友圈的文字和图片到本地做成书等等。

自己写的爬虫:
根据关键字爬取500px高清图:
https://github.com/5218664b/WebCrawler/tree/master/px
爬取toptxt.net网站的小说到本地:
https://github.com/5218664b/WebCrawler/tree/master/novelDownload

windows上使用scrapy

1. 下载Anaconda(一个python开发环境),选择带高版本的pyhton下载,安装过程中回提示安装visual code作为python代码的编辑器,使用自己喜欢的编辑器就行

下载地址: https://www.anaconda.com/download

2. 安装scrapy

打开Anaconda提供的python环境终端

执行命令

#  conda install scrapy

我这里已经安装过了,提示更新,要等待大概3分钟左右

安装完成之后执行命令

#  scrapy

出现帮助提示说明安装成功

3. 创建scrapy项目,编写代码,运行爬虫

首先进入自己的Project目录,然后执行命令

#  scrapy startproject projectName
#  cd projectName

执行命令,生成模板spider(蜘蛛)

#  scrapy genspider spiderName domain.com

然后使用visual code打开刚才生成的项目文件夹projectName,编写代码,代码的编写自行查看开头的官网文档,我觉得可以先看看那个爬取微信朋友圈的东西,先可以完整运行一个项目,然后再根据文档理解每一步的含义,之后就可以自己进行符合自己需求的代码编写了。

在我写了三个scrapy项目之后,我觉得代码编写比较简单,比较麻烦的地方在于分析网站的数据规律,对scrapy的选择器的灵活使用,还有因为每个对站点的request都是异步处理数据的,不会等待reponse的返回,要注意请求顺序的处理。

遇到的坑:
1.爬取小说,每一章节都在不同的页面,请求第一章的页面之后不能立即请求第二章,否则写到文件中的章节顺序就乱了(全部请求然后可能排序也是一个好办法,没试过),所以应该把第二次请求写到reponse函数中,保证按章节顺序抓取数据,此时传递参数不能使用全局变量,应该使用meta进行传递,这个网站很简单没有各种校验也不必传cookie,直接抓的就是DOM上的html数据。

2.爬取500px图片,500px搜索页在页面加载完成之后,首先通过ajax请求获取的json格式的各种分辨率的图片url,然后再把图片从cdn下载到页面,必要的搜索参数不必说了,在浏览器的f12的network就能拿到,分析网页的时候发现必须要有cookie等一系列的请求参数否则一直返回404,而且最坑的是每次请求json数据之前都要先发送一个options请求然后再get才可以拿到数据,,,花了好长时间,使用fiddler一顿抓包分析才发现...

编写完成之后运行项目,因为response获取的数据都是unicode所以写道文件的时候需要转码为utf-8,所以加选项-s FEED_EXPORT_ENCODING=utf-8,-o选项是制定输出到哪个文件,spiderName是创建的项目名

#    scrapy crawl spiderName -o spiderName.json -s FEED_EXPORT_ENCODING=utf-8

爬下来数据之后查看spidlerName中的数据或者做的其他的处理

主要是分析网站数据和查看sprider的文档进行代码的编写


scrapy代码的编写

官方文档就写的很详细了,每次忘了就看看官方文档吧

https://scrapy-cookbook.readthedocs.io/zh_CN/latest/scrapy-02.html

当前页面是本站的「Baidu MIP」版。查看和发表评论请点击:完整版 »