吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3103|回复: 17
收起左侧

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

  [复制链接]
wxxwjy 发表于 2022-12-19 08:55
本帖最后由 wxxwjy 于 2023-2-13 12:38 编辑

有项目论坛私信我
我又回来啦!
周六周天身边同事阳了一批,自己也啥也没干,昨晚又手痒了,敲了会代码,在这分享一下!

废话不多说:
第一步分析列表页:某瓣排行榜影片不分第几页了,跟微博一样,是发送Ajax请求用JS渲染的,特点就是下拉加载只刷新部分内容,检查网页,进入NetWork,选择XHR,然后下拉让网页刷新几下,会发现几个特殊的XHR请求,典型的Ajax,双击每个请求分析url得到每页的关系,也很容易请求到每页的网址了。
1671408207372.jpg

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


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

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

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

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

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

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

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

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

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

29f56a1a9ea8148e3cdf017ea580482.png
1671411175689.png

免费评分

参与人数 6吾爱币 +6 热心值 +6 收起 理由
lcg2014 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
arsleeli + 1 + 1 我很赞同!
WLewis + 1 + 1 我很赞同!
坐久落花多 + 1 + 1 有没有兴趣写一个抓优质资源库 https://1080zyk.com/
mainblog + 1 + 1 谢谢@Thanks!
joneqm + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| wxxwjy 发表于 2022-12-19 15:25
本帖最后由 wxxwjy 于 2022-12-19 15:33 编辑
坐久落花多 发表于 2022-12-19 15:03
有没有兴趣写一个抓优质资源库 https://1080zyk.com/

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

视频页m3u8视频

视频页m3u8视频

详情页视频连接

详情页视频连接

第一页

第一页
 楼主| wxxwjy 发表于 2022-12-19 09:04
stop9527 发表于 2022-12-19 09:00
哟吼。 。可思路可以 我看用我的java 能实现不。

看下吧,分享出来就是大家互相学习的
stop9527 发表于 2022-12-19 09:00
哟吼。 。可思路可以 我看用我的java 能实现不。
aa2923821a 发表于 2022-12-19 09:01
刚好我需要参考一下
cpckly 发表于 2022-12-19 10:22
思路可以借鉴,谢谢分享
istat 发表于 2022-12-19 11:04
谢谢分享。
mainblog 发表于 2022-12-19 12:51
感谢楼主分享学习,很不错!
zhangsan2022 发表于 2022-12-19 14:24
感谢楼主分享学习,很不错!
坐久落花多 发表于 2022-12-19 15:03
有没有兴趣写一个抓优质资源库 https://1080zyk.com/
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 02:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表