初识Python爬虫-爬取无需登录的分页数据

一、背景

       最近比较有时间,于是学习了一下python,并尝试爬取了自己比较感兴趣的几个网站,如纵横中文小说网、千图网以及GIF动态图网站,成功爬取这几个网站的数据后,在这里总结下爬取此类网站的一些固定套路以及遇到的一些问题

二、项目架构

    本人使用的Python环境时python3.8,爬虫主要依赖的是scrapy框架以及requests库,这些第三库可以使用pip工具安装,如果安装速度很慢,可以更换下载源,操作方式请自行百度或询问我,pip直接安装scrapy时可能出现安装失败的情况,如果安装失败可以参考scrapy安装进行安装

三、案例说明

学习了scrapy框架后,我第一个练手的项目就是纵横中文网,这里我的目的是爬取指定小说的全部内容,刚开始做的时候比较low,数据全部保存在一个txt文件中。项目代码地址:纵横中文网爬虫项目

使用scrapy框架创建一个爬虫项目非常的简单:在命令窗口执行命令 scrapy startproject 你的项目名      即可


scrapy创建项目

这时查看对应的目录下就会多出一个名为demo的项目,我们用vscode打开此项目查看下项目结构


demo项目的结构

这就是一个基本版的scrapy项目框架,其中items.py是用来书写保存爬虫数据的对象,pipelines.py是用来编写处理爬取数据的位置,settings.py使用来更改环境配置的位置,而spiders文件夹下面用来编写具体的爬虫操作的python对象

下面让我们以纵横中文网的爬虫案例讲解下如何使用scrapy框架

第一步:编写item


编写item

其实就是定义要爬取的内容

第二步:编写爬虫文件,在spiders文件夹下创建对应的爬虫文件


爬虫文件

重点来了,创建好这个文件后,文件名和其中的爬虫类名不重要,重要的是爬虫的类的name字段的要和文件名保持一致,

其次是allowed_domains设置为你希望爬取的网站的域名

start_urls存储的是开始爬虫的第一个地址

最重要的是parse函数,这个函数是爬虫开始后获取到响应数据第一个调用的函数,我们在这个函数里编写解析响应数据的代码

首先我们查看下要爬取的页面:


目标网站

可以看到这个页面上直接展示了所有的章节数据,我们要做的第一步就是找到对应的详情页的链接地址,这里我采用的xpath方式

'//ul[@class="chapter-list clearfix"]/li/a/@href',获取到对应的链接地址列表后,我们采用循环的方式异步调用


这个地方创建的item就是需要保存的数据对象,通过yield请求详情页的地址并指定回调函数为parseText,传递item数据

接下来就是在parseText函数中处理详情页的数据,解析数据的方式也是xpath


然后将对应数据存入item对象;至此数据解析完毕

第三步:处理解析到的爬虫数据

在pipelines.py中编写对应的代码,其实就是处理获取到的item数据


这个类中默认有一个方法process_item方法处理解析到的数据,但爬取小说数据时,我们不能直接在这个函数里进行处理,因为小说章节都是由顺序的,而scrapy框架是异步编程,这样就会导致写入文件的顺序变乱,为了解决这个问题,我们需要重写open_spider和close_spider方法,在close_spider中完成文件的写入操作,这个应该比较容易理解,就相当于我们存储了多次item,process_item在每次获取到item时都会调用,而open_spider和close_spider只会在连接和关闭时调用一次,这样就可以自行处理获取到的数据

第四步:配置setttings.py

在这个文件中配置对应的环境数据,如浏览器请求参数和爬虫处理的管道数等


至此,爬虫项目编写完成。

既然爬取这样的小说网站可以,那么我们也可以参照这个方式爬取图片网站的数据,这里我选择的千图网的gif动图数据

项目代码地址:千图网爬虫

核心的爬虫代码如下所示:


爬取千图网的数据



爬虫效果


完成这个项目后我又找了福利汇的网站进行爬取

项目地址福利汇

在这个项目里实现了保存数据至数据库,如下图所示



settings配置处理方式


爬虫效果


爬虫效果

这些数据量挺大的,全部下载要比较久的时间,所以我就直接存在数据库了

针对上面三个练手项目,我们可以轻易的掌握使用scrapy这个框架进行爬虫,我作为一个python的初学者,编写一个这样的项目也只需要一个小时以内而已。此外我还编写了一个爬取买家秀的项目,欢迎大家访问我的码云主页查看。

使用这个框架的基本套路是:

编写item,定义需要的字段,编写爬虫文件,针对分页的数据,就按照如下的套路,在parse函数中获取详情的链接,以循环的方式请求详情页的数据解析,循环结束后,继续请求下一页的数据,在pipelines文件中编写处理爬虫数据,是不是感觉很简单呢,今日的分享到此为止,欢迎大家有任何问题加我微信交流技术,大家一起进步。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,755评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,369评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,799评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,910评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,096评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,159评论 3 411
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,917评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,360评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,673评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,814评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,509评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,156评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,123评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,641评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,728评论 2 351

推荐阅读更多精彩内容