1.scrapy框架安装
我用的是pycharm所以直接在pycharm页面中的Terminal输入pip install scrapy ![点击Terminal,然后输入pip install scrapy,会看到它在下载,运行完后只要不出现红色字体下载就完成了,若出现红色字体就重试几次,可能是网络原因,其它的我没碰到过,碰到了只能自求多福了](https://img-blog.csdnimg.cn/94a09b8e46b6412f8a078853a0aaf8d5.png) 网站上一些大博主首先是下载了Twisted插件,嗯下载网址是:“https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted” (1) 进入页面搜索(Ctrl+f)twisted cp34表示Python3.4版本 win32表示32位操作系统
(2) 下载完成后进入终端(wind+r输入cmd回车或者用pycharm的Terminal),输入pip install Twisted-18.7.0-cp36-cp36m-win32.whl Twisted-18.7.0-cp36-cp36m-win32.whl:文件名(你下载哪个文件就输入哪个文件的文件名,要输入全部路径)
(3) 安装完成后再输入pip install scrapy,回车检测scrapy安装是否成功:在终端输入scrapy,出现以下内容就代表安装成功 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2fa74d96ba7842439dda1443f9f615d9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56eD56eD5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16)
2.创建一个scrapy爬虫项目
(1) 在Terminal输入scrapy startproject 项目文件夹名(你自己随便命名,就像我是作者我喜欢用pycharm里的Terminal,也可以用cmd) ![创建好了以后它会提示你接下来怎么做,按照它的提示来](https://img-blog.csdnimg.cn/dc5f9c74ee524c19a671a0784544b08e.png) (2) 进入我们刚刚创建好的文件夹(cd 文件名,这里是cd test1) 进入到文件夹输入scrapy genspider example example.com,这第二个example 的意思是你要爬的那个网站的域名,第一个你随便命名,例如我要准备考四级了,但是对英语没有一点兴趣,我就去找英语热词然后我就去爬 英语点津于是创建了一个 scrapy genspider dj language.chinadaily.com.cn (language.chinadaily.com.cn是域名,example.com不一定要这种格式) ![创建完成](https://img-blog.csdnimg.cn/2576a356ee4a4ff5bcf880662ff756b9.png) (3) 按照路径你可以找到test1文件夹下面有个test1Python文件夹dj.py 文件就在spiders文件夹下面,划重点:dj.py文件就是我们要写的爬虫,是用来专门写爬虫的,pipelines.py 则是专门用来保存的 settings.py 则是用来伪装,接口代理等等,middlewares.py则是一些中间键设定暂时不用管。
(4) 由第三步我们可以知道我们主要编写的就是dj.py,pipelines.py,settings.py三个文件,下面开始搂代码
dj.py 初始: ![](https://img-blog.csdnimg.cn/6eac65cb24424e3ca3c034310cc18318.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56eD56eD5a2Q,size_18,color_FFFFFF,t_70,g_se,x_16) 首先我们需要更改start_urls也就是初始页面网址 ![在这里插入图片描述](https://img-blog.csdnimg.cn/350b1cdbfd2340b2b4227017f10f916f.png) 所以将http://language.chinadaily.com.cn/更改为https://language.chinadaily.com.cn/news_hotwords/
然后我们需要在parse(self, response)函数里面写入我们需要爬取的规则,我这用的是xpath ‘./’的意思是在当前目录下 ![在这里插入图片描述](https://img-blog.csdnimg.cn/8f69bf10bc6a4731b1f465d3f999e975.png) 我们可以运行一下看下效果,这儿不能直接运行代码,要点击Terminal进入到当下的test1下输入scrapy crawl dj![请添加图片描述](https://img-blog.csdnimg.cn/1ad76c93214244f1a97807c57824a496.PNG?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56eD56eD5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16) 然后你会发现不仅爬出了内容还爬出了许多不需要的,也不能说不需要,作为初学者来说只要自己需要的内容获取到了,就不需要其它的,我开始也是这样,学到到后面就会明白可以从这些信息里面看有没有报错,报错的是什么位置,这个怎么看暂时不说,因为一两句说不完。
那么我们该如何去掉这些不需要的呢?这时候,我们打开settings.py文件这里面的变量名都是用大写开头的 我们选中一行输入LOG_LEVEL = ‘WARNING’** ![在这里插入图片描述](https://img-blog.csdnimg.cn/90e3a0d8d75e4a3bbb59344f50edce11.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56eD56eD5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16) 再在Terminal运行scrapy crawl dj ![在这里插入图片描述](https://img-blog.csdnimg.cn/4c8da2079b5a4b10b8369aff4e404ecf.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56eD56eD5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16)
3.加载下一页下下页的内容
1.首先分析目标页面的页面规律,大致规律都相同,像tb则是页面数44,回到我们这个目标网站 ![第一页](https://img-blog.csdnimg.cn/316da2016af142a28851895f0b70909c.png) ![第二页](https://img-blog.csdnimg.cn/9ae97079a90c41d0be54d705314d2357.png) ![最后一页](https://img-blog.csdnimg.cn/ae6e88b01f6043728a0ded3ec018b0de.png) 由此我们可以得出来url的规律**‘https://language.chinadaily.com.cn/news_hotwords/page_{}.html’.format(i)*** # i是自己定义的当i=1时得到的和初始页面的内容是一样的,我们知道了最后一页的页码,因此可以用range循环从1到230(注意!python默认从0开始)。
问题来了 怎么把url参数传入到parse()函数里面去并执行?这时候我也不行了只能去找官方文档,不找不知道一找,直接把我看懵了,这里我帮你们简化了就是咱们***scrapy.Request()函数***我们大致常用的参数就三分别是:url,callback,meta 其中meta作为传参主要是获取链接详细内容,例如:我想获得我爬到第一条热词的详细信息,这里先不说,怕等下越弄越复杂。 上代码 ![在这里插入图片描述](https://img-blog.csdnimg.cn/54c5a54f64074d8988a7c8609887f3db.png)
![效果图](https://img-blog.csdnimg.cn/2e5692db00c9489c8976c6613d6f2ce9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56eD56eD5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16)
4.保存
1.首先打开settings.py 找到可以用Ctrl+F搜索将这三行的注释打开。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/275ba04e68114c5da0ff96b64a47399c.png) 2.进入pipelines.py在函数里面写入文件保存![在这里插入图片描述](https://img-blog.csdnimg.cn/1ab1341fe28a44ae92ba564ef9851028.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/8372598cca414eb8b0b35708a03f3e0f.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/1539456bffc2469296e30cd8a101eba7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56eD56eD5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16)
5.总结
1.scrapy startproject 文件夹名称 2.cd 文件夹名称 3.scrapy genspider 项目名 项目域 4.scrapy crawl 项目名
用英语点津这个网站来入门scrapy框架学习是最简单的,这个网站没有反爬,在实际生活中爬取信息我们不仅需要设置请求信息,还会涉及多线程,异步,爬取资源限制,代理等等,由于这篇文章的目的是引领需要的人进入scrapy框架的学习所以一些深一点的便不在这而展示,后续有时间会持续更新案例,有兴趣的可以相互讨论讨论。
|