python爬虫抓取某瓣排行榜影名、评分、评论,存入MongoDB
本帖最后由 wxxwjy 于 2023-2-13 12:38 编辑有项目论坛私信我
我又回来啦!
周六周天身边同事阳了一批,自己也啥也没干,昨晚又手痒了,敲了会代码,在这分享一下!
废话不多说:
第一步分析列表页:某瓣排行榜影片不分第几页了,跟微博一样,是发送Ajax请求用JS渲染的,特点就是下拉加载只刷新部分内容,检查网页,进入NetWork,选择XHR,然后下拉让网页刷新几下,会发现几个特殊的XHR请求,典型的Ajax,双击每个请求分析url得到每页的关系,也很容易请求到每页的网址了。
第二步分析详情页:详情页正常的requests.get访问,即可拿到源代码,影评什么的都在里边,这个不需要多解释了直接拿,通过查看列表页的js代码可以看到详情页的url在每个电影数据里的url:数据下,我们直接遍历列表页的每个电影数据,然后get("url")就可拿到。其余的就是苦逼的代码时间。
第三步写代码:
①导入库:time只用sleep上个帖子说过了,requests请求库会爬虫的都会,没用过logging可以到网上查查很好用的一个日志库比print好用,pyquery可以简单拿到网页数据,pymongo操作数据库的
②定义全局变量:MONGO_CONNECTION_STRING连接数据库的地址,每个人的数据库在本地打开都是这个连接;MONGODB_NAME数据库集合名称;client、db、collection连接数据库;logging.basicConfig定义日志输出格式;LIMIT每页显示的数据数量;TOTAL_PAGE要爬取的页面数量;REQUEST_URL这个是为了跳过404页面的后边说;Headers、proxies不用多说了
③定义每页的请求函数:这个地方我想写一个函数来着,详情页返回html代码列表页返回json我去网上搜了怎么判断是json数据然后写入之后发现不对,就写了两个函数,两个函数还是有必要的,因为详情页和列表页考虑的不一样,分开更具有代表性。
抓取列表页的json数据:判断网页响应状态输出对应异常状态方便处理
抓取html数据:检测到404可以直接return的,我本来写的是让程序请求两遍,请求不到再return来着,后来发现没必要,凑合看,哈哈
④定义url拼接函数:接受页码,拼接每页的url,找到关系很简单
⑤定义详情页数据抓取函数:不再多说自己看看详情页代码这里很简单,空字符不跳过会异常(异常都显示None,且代码会停)
⑥定义保存数据到MongoDB的函数:空字符不跳过会异常(异常都显示None,且代码会停)
⑦定义主函数串联加翻页:这里实际抓了十页,输出的确是9页,是我忘记把输出页码加一了
最后是运行结果:两页空数据404的,一共198条,没加进程池子,速度有点慢,后期加
本帖最后由 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 stop9527 发表于 2022-12-19 09:00
哟吼。 。可思路可以 我看用我的java 能实现不。
看下吧,分享出来就是大家互相学习的 哟吼。 。可思路可以 我看用我的java 能实现不。 刚好我需要参考一下 思路可以借鉴,谢谢分享 谢谢分享。 感谢楼主分享学习,很不错! 感谢楼主分享学习,很不错! 有没有兴趣写一个抓优质资源库 https://1080zyk.com/
页:
[1]
2