python爬虫抓取某瓣排行榜影名、评分、评论,存入MongoDB

查看 174|回复 10
作者:wxxwjy   
我又回来啦!
周六周天身边同事阳了一批,自己也啥也没干,昨晚又手痒了,敲了会代码,在这分享一下!
废话不多说:
第一步分析列表页:某瓣排行榜影片不分第几页了,跟微博一样,是发送Ajax请求用JS渲染的,特点就是下拉加载只刷新部分内容,检查网页,进入NetWork,选择XHR,然后下拉让网页刷新几下,会发现几个特殊的XHR请求,典型的Ajax,双击每个请求分析url得到每页的关系,也很容易请求到每页的网址了。


1671408207372.jpg (68.38 KB, 下载次数: 0)
下载附件
2022-12-19 08:04 上传

第二步分析详情页:详情页正常的requests.get访问,即可拿到源代码,影评什么的都在里边,这个不需要多解释了直接拿,通过查看列表页的js代码可以看到详情页的url在每个电影数据里的url:数据下,我们直接遍历列表页的每个电影数据,然后get("url")就可拿到。其余的就是苦逼的代码时间。


1671408647473.png (60.76 KB, 下载次数: 0)
下载附件
2022-12-19 08:10 上传



image.png (69.07 KB, 下载次数: 0)
下载附件
2022-12-19 08:12 上传

第三步写代码:
①导入库:time只用sleep上个帖子说过了,requests请求库会爬虫的都会,没用过logging可以到网上查查很好用的一个日志库比print好用,pyquery可以简单拿到网页数据,pymongo操作数据库的


1671408953426.jpg (20.69 KB, 下载次数: 0)
下载附件
2022-12-19 08:15 上传

②定义全局变量:MONGO_CONNECTION_STRING连接数据库的地址,每个人的数据库在本地打开都是这个连接;MONGODB_NAME数据库集合名称;client、db、collection连接数据库;logging.basicConfig定义日志输出格式;LIMIT每页显示的数据数量;TOTAL_PAGE要爬取的页面数量;REQUEST_URL这个是为了跳过404页面的后边说;Headers、proxies不用多说了


1671409289944.jpg (76.46 KB, 下载次数: 0)
下载附件
2022-12-19 08:21 上传

③定义每页的请求函数:这个地方我想写一个函数来着,详情页返回html代码列表页返回json我去网上搜了怎么判断是json数据然后写入之后发现不对,就写了两个函数,两个函数还是有必要的,因为详情页和列表页考虑的不一样,分开更具有代表性。
抓取列表页的json数据:判断网页响应状态输出对应异常状态方便处理


image.png (69.99 KB, 下载次数: 0)
下载附件
2022-12-19 08:32 上传

抓取html数据:检测到404可以直接return的,我本来写的是让程序请求两遍,请求不到再return来着,后来发现没必要,凑合看,哈哈


image.png (87.54 KB, 下载次数: 0)
下载附件
2022-12-19 08:35 上传

④定义url拼接函数:接受页码,拼接每页的url,找到关系很简单


1671410303106.jpg (29.32 KB, 下载次数: 0)
下载附件
2022-12-19 08:39 上传

⑤定义详情页数据抓取函数:不再多说自己看看详情页代码这里很简单,空字符不跳过会异常(异常都显示None,且代码会停)


image.png (77.59 KB, 下载次数: 0)
下载附件
2022-12-19 08:40 上传

⑥定义保存数据到MongoDB的函数:空字符不跳过会异常(异常都显示None,且代码会停)


1671410534559.jpg (27.43 KB, 下载次数: 0)
下载附件
2022-12-19 08:41 上传

⑦定义主函数串联加翻页:
[color=]这里实际抓了十页,输出的确是9页,是我忘记把输出页码加一了


image.png (53.83 KB, 下载次数: 0)
下载附件
2022-12-19 08:48 上传

最后是运行结果:两页空数据404的,一共198条,
[color=]没加进程池子,速度有点慢,后期加


00b9d03fc8667a5ab06e34e36cd7b68.png (105.87 KB, 下载次数: 0)
下载附件
2022-12-19 08:51 上传



29f56a1a9ea8148e3cdf017ea580482.png (180.57 KB, 下载次数: 0)
下载附件
2022-12-19 08:52 上传

下载次数, 下载附件

wxxwjy
OP
  


坐久落花多 发表于 2022-12-19 15:03
有没有兴趣写一个抓优质资源库 https://1080zyk.com/

虽然选择u1之后不显示,但点进u1去,连接在这里边,第一个u1不是注意了,由于我还要学习和上班暂时没有这方面的想法,视频页面的连接在li的a里,以及真正的视频连接都在下边了C:\Users\59314\Desktop\1671434510261.jpg
wxxwjy
OP
  


stop9527 发表于 2022-12-19 09:00
哟吼。 。可思路可以 我看用我的java 能实现不。

看下吧,分享出来就是大家互相学习的
stop9527   

哟吼。 。可思路可以 我看用我的java 能实现不。
aa2923821a   

刚好我需要参考一下
cpckly   

思路可以借鉴,谢谢分享
istat   

谢谢分享。
mainblog   

感谢楼主分享学习,很不错!
wangsking   

感谢分享,共同学习,共同进步!
zhangsan2022   

感谢楼主分享学习,很不错!
您需要登录后才可以回帖 登录 | 立即注册

返回顶部