返回信息流最近需要爬取一些评论作为数据使用。
之前最开始是接触到静态网页。
后来发现有一些不会显示,需要一定动作后才加载。比如一个评论的回复部分,需要点击“显示全部”后再能找到。(ajax?)使用较笨的方法,selenium + PhantomJS , 找到按键element再click,然后和静态网页一样处理。
但是现在又遇到了一种新的情况。也是需要点击“评论”按键后才能看到评论内容。但是这里我怎么都找不到带JavaScript的元素。意味着我不能和之前一样模拟点击来获取内容。
我已经找到了XHR的相应是哪一个了,但是不知道怎么继续下去。有大神指点一下吗?
网址可以查看
http://dushu.qq.com/intro.html?bid=359226&sword=%E8%8A%B1%E5%8D%83%E9%AA%A8
然后需要得到的是评论里的内容。。
熟悉的朋友给个思路呗 = =
这是一条镜像帖。来源:北邮人论坛 / python / #22092同步于 2018/6/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
【问题】异步加载的网页如何爬取
uvj1010
2018/6/7镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
抓包分析请求,找到目标内容所在的网址,爬该网址,通过分析参数变化规律来写遍历网址的逻辑,一般这个思路都能解决吧,还有一些反爬的会在参数里加秘钥,还得分析js就很麻烦了,不过你这个应该没那么麻烦
简单分析了一下,所有的评论都是通过POST请求http://dushu.qq.com/intro/getComment.html 这个URL来获得的,得到的response都是一个json
我的想法是可以模拟请求这个URL,然后解析json,正则匹配一下就能得到评论了
666
【 在 buptsmith (smith) 的大作中提到: 】
: 简单分析了一下,所有的评论都是通过POST请求http://dushu.qq.com/intro/getComment.html这个URL来获得的,得到的response都是一个json
: 我的想法是可以模拟请求这个URL,然后解析json,正则匹配一下就能得到评论了
谢谢~
我有分析XHR,然后加载评论的确是由getComment.html得到的,但是如何得到相应的内容呢,我进去只有一小段内容,加上id也是。其他网站我试过,同样的方式的确能得到想要的内容。
而且有个问题是,如果通过这种方法。是不是只能得到第一页的内容,不能实现评论翻页和评论的回复展开? 有没有其他方法能直接模拟点击[评论]的操作,然后能显示所有的评论内容再和普通静态网页一样爬取评论回复和进行评论翻页…
【 在 buptsmith 的大作中提到: 】
: 简单分析了一下,所有的评论都是通过POST请求http://dushu.qq.com/intro/getComment.html 这个URL来获得的,得到的response都是一个json
:
:
: .........
selinum了解一下
【 在 uvj1010 的大作中提到: 】
: 谢谢~
: 我有分析XHR,然后加载评论的确是由getComment.html得到的,但是如何得到相应的内容呢,我进去只有一小段内容,加上id也是。其他网站我试过,同样的方式的确能得到想要的内容。
: 而且有个问题是,如果通过这种方法。是不是只能得到第一页的内容,不能实现评论翻页和评论的回复展开? 有没有其他方法能直接模拟点击[评论]的操作,然后能显示所有的评论内容再和普通静态网页一样爬取评论回复和进行评论翻页…
是的,之前一些网页是使用selenium找到element再click,但这个我是真的找不到那个element在哪哇…貌似并不是JavaScript元素[ema1]
【 在 hotpot 的大作中提到: 】
: selinum了解一下
: 【 在 uvj1010 的大作中提到: 】
: : 谢谢~
: : 我有分析XHR,然后加载评论的确是由getComment.html得到的,但是如何得到相应的内容呢,
: .........
大佬有空可以扫一眼一楼的网址给条明路吗,数据不到手后续工作都卡住了…
【 在 hotpot 的大作中提到: 】
: selinum了解一下
: 【 在 uvj1010 的大作中提到: 】
: : 谢谢~
: : 我有分析XHR,然后加载评论的确是由getComment.html得到的,但是如何得到相应的内容呢,
: .........
网页POST发送的DATA是这样的
bid是文章的id,pageindex就是页码
只要不断的更换页码发送请求就能模拟翻页吧
然后可以在Response里看到总页码
你直接打开获得评论的这个链接肯定不能得到内容啊,它是POST的请求方式
只是我的想法可能不一定对
【 在 uvj1010 的大作中提到: 】
: 谢谢~
: 我有分析XHR,然后加载评论的确是由getComment.html得到的,但是如何得到相应的内容呢,我进去只有一小段内容,加上id也是。其他网站我试过,同样的方式的确能得到想要的内容。
: