Ajax数据爬取--爬取微博

Ajax

Ajax,即异步的JaveScript和XML。它不是一门编程语言,而是利用JaveScript在保证页面不被刷新,页面链接不改变的情况下与服务器交换数据并更新部分网页的技术。

对于传统的网页,如果想要更新内容,那么必须要刷新整个页面,但有了Ajax,便可以在页面不被刷新的基础上更新其内容。

比如像微博有些网页就是采取的Ajax技术来进行部分网页内容的刷新。

接下来我们就通过Ajax来爬取某知名博主的全部微博内容,及其各条微博的点赞数,评论数等内容。

from urllib.parse import urlencode                           2 import requests
  3 from pyquery import PyQuery as pq
  4 base_url = " https://m.weibo.cn/api/container/getIndex?"
  5 headers = {
  6         "authority":"m.weibo.cn",
  7         "referer":"https://m.weibo.cn/u/2830678474",
  8         "user-agent":"Mozilla/5.0 (X11; Linux x86_64) Apple    WebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safar    i/537.36",
  9         "x-requested-with":"XMLHttpRequest",
 10         }
 11 since_id = 0
 12 def no_since_id():
 13     global since_id
 14     params = {
 15         "type":"uid",
 16         "value":"2830678474",
 17         "containerid":"1076032830678474"
 18         }
 19     url = base_url + urlencode(params)
 20     response = requests.get(url,headers = headers)
 21     json = response.json()
 22     since_id = json.get("data").get("cardlistInfo").get("si    nce_id")
 23     return response.json()
 24 
 25 def get_since_id():
 26     global since_id
 27     params = {
 28         "type":"uid",
 29         "value":"2830678474",
 30         "containerid":"1076032830678474",
 31         "since_id":since_id
 32             }
 33     url = base_url + urlencode(params)
 34     response = requests.get(url,headers = headers)
 35     json = response.json()
 36     since_id = json.get("data").get("cardlistInfo").get("si    nce_id")
 37     return response.json()
 38 
 39 
 40 def parse_since_id(json):
if json:
 42         items = json.get("data").get("cards")
 43         for item in items:
 44             item = item.get("mblog")
 45             weibo = {}
 46             weibo["id"] = item.get("id")
 47             weibo["text"] = pq(item.get("text")).text()
 48             weibo["attitudes"] = item.get("attitudes_count"    )
 49             weibo["comment_count"] = item.get("comments_cou    nt")
 50             yield weibo
 51 
 52 if __name__ == "__main__":
 53     json = no_since_id()
 54     results1 = list(parse_since_id(json))
 55     count = 0
 56     while count < 20:#原则上可以无限爬取,但考虑到时间只爬>    取400条微博内容
 57         json = get_since_id()
 58         results = list(parse_since_id(json))
 59         result_all = results1 + results
 60         for result in result_all:
 61            print(result)
 62 

部分爬取结果

{'id': '4475185367478768', 'text': '每当我颓废的时候,看看这个视频,我就浑身充满了斗志!为了我和我老婆的小米之家!我可以!我能行!加油! 崔庆才丨静觅的微博视频', 'attitudes': 67, 'comment_count': 20}
{'id': '4560043586357079', 'text': '今天和我老婆相识两周年啦!!!@长泽牙妹 没错,聊天记录我还留着呢。 没错,认识第一天就互相夸帅了。', 'attitudes': 21, 'comment_count': 4}
{'id': '4559318243876350', 'text': '塑料钞票是什么?', 'attitudes': 0, 'comment_count': 3}
{'id': '4559150907923613', 'text': '恭喜!', 'attitudes': 2, 'comment_count': 0}
{'id': '4558977381958673', 'text': '又和老婆约会了,嘿嘿嘿。', 'attitudes': 5, 'comment_count': 3}
{'id': '4558976778247661', 'text': '不在运营范围//@长泽牙妹:@崔庆才丨静觅 太牛逼了//@Easy:自动驾驶出租车终于来了 这东西普及以后,买车租车都不用了吧 //@pi1ot:', 'attitudes': 1, 'comment_count': 0}
{'id': '4558976588457736', 'text': '替我老婆来一票!我拼了!', 'attitudes': 0, 'comment_count': 7}
{'id': '4557910472659663', 'text': '家里又添加一枚苹果设备,又能连蓝牙又能听广播,当然最重要的还是气质! 崔庆才丨静觅的微博视频', 'attitudes': 8, 'comment_count': 11}
{'id': '4557363392028554', 'text': '必点不要餐具???', 'attitudes': 2, 'comment_count': 5}
{'id': '4556972688938168', 'text': '老婆快看!@长泽牙妹', 'attitudes': 0, 'comment_count': 2}
{'id': '4556771409006204', 'text': '', 'attitudes': 1, 'comment_count': 2}
{'id': '4556659122241609', 'text': '和老婆在一起七百天啦! @长泽牙妹', 'attitudes': 19, 'comment_count': 7}
{'id': '4555567403894898', 'text': '', 'attitudes': 2, 'comment_count': 0}
{'id': '4553441432841866', 'text': '看这个赛程,下场掘金必胜?', 'attitudes': 1, 'comment_count': 1}
{'id': '4551000373858164', 'text': '我老婆最好看了', 'attitudes': 4, 'comment_count': 2}
{'id': '4550992743635797', 'text': '之前跟老婆逛街,每当路过苹果店我都会去看看iMac,还跟老婆介绍说某个定制版多么多么牛逼,以后要是有台这个就好了。今天老婆居然直接送我了一台,还是定制版!啊啊啊啊啊啊啊我哭了! 我老婆也太好了吧!', 'attitudes': 25, 'comment_count': 29}
{'id': '4550482318590459', 'text': '@长泽牙妹', 'attitudes': 3, 'comment_count': 0}
{'id': '4548431908180073', 'text': '这是我老婆让我发的我老婆给我拍的我今天和我老婆道别的时候。 崔庆才丨静觅的微博视频', 'attitudes': 10, 'comment_count': 11}
{'id': '4545200389364228', 'text': '', 'attitudes': 1, 'comment_count': 0}
{'id': '4544491111844364', 'text': '老婆真好啊,今天感觉工作有点累不太开心,然后老婆晚上和我开了一下视频对我笑了笑撒了撒娇,我瞬间又开心又好了,感觉心里暖暖的,我老婆最好了!', 'attitudes': 15, 'comment_count': 3}
{'id': '4543259479641769', 'text': '我老婆最好看了', 'attitudes': 12, 'comment_count': 0}
{'id': '4475185367478768', 'text': '每当我颓废的时候,看看这个视频,我就浑身充满了斗志!为了我和我老婆的小米之家!我可以!我能行!加油! 崔庆才丨静觅的微博视频', 'attitudes': 67, 'comment_count': 20}
{'id': '4560043586357079', 'text': '今天和我老婆相识两周年啦!!!@长泽牙妹 没错,聊天记录我还留着呢。 没错,认识第一天就互相夸帅了。', 'attitudes': 21, 'comment_count': 4}
{'id': '4559318243876350', 'text': '塑料钞票是什么?', 'attitudes': 0, 'comment_count': 3}
{'id': '4559150907923613', 'text': '恭喜!', 'attitudes': 2, 'comment_count': 0}
{'id': '4558977381958673', 'text': '又和老婆约会了,嘿嘿嘿。', 'attitudes': 5, 'comment_count': 3}
{'id': '4558976778247661', 'text': '不在运营范围//@长泽牙妹:@崔庆才丨静觅 太牛逼了//@Easy:自动驾驶出租车终于来了 这东西普及以后,买车租车都不用了吧 //@pi1ot:', 'attitudes': 1, 'comment_count': 0}
{'id': '4558976588457736', 'text': '替我老婆来一票!我拼了!', 'attitudes': 0, 'comment_count': 7}
{'id': '4557910472659663', 'text': '家里又添加一枚苹果设备,又能连蓝牙又能听广播,当然最重要的还是气质! 崔庆才丨静觅的微博视频', 'attitudes': 8, 'comment_count': 11}
{'id': '4557363392028554', 'text': '必点不要餐具???', 'attitudes': 2, 'comment_count': 5}
{'id': '4556972688938168', 'text': '老婆快看!@长泽牙妹', 'attitudes': 0, 'comment_count': 2}
{'id': '4556771409006204', 'text': '', 'attitudes': 1, 'comment_count': 2}
{'id': '4543252072761828', 'text': '不知道大家是否已经对抖音有了一种厌倦?最早的时候我觉得内容质量还行,现在没刷几个视频,很多都是广告、带货、博人眼球、摆拍、空洞的内容,质量越来越差,越看越没劲,卸了卸了,还是撸代码好玩。', 'attitudes': 10, 'comment_count': 8}
{'id': '4541086507209784', 'text': '铁窗爱情3', 'attitudes': 25, 'comment_count': 4}
{'id': '4541085119162017', 'text': '即便没收费,那直播搞这个操作也是太服了。', 'attitudes': 3, 'comment_count': 0}
{'id': '4539580352832042', 'text': '铁窗爱情2', 'attitudes': 3, 'comment_count': 4}
{'id': '4538323178106309', 'text': '老婆返校了,但是出不来,于是就有了铁窗爱情。@长泽牙妹 北京', 'attitudes': 20, 'comment_count': 6}
{'id': '4536099089947100', 'text': '半路杀出个李咬金。', 'attitudes': 1, 'comment_count': 0}
{'id': '4534296319361611', 'text': '真尼玛被安卓搞死了啊啊啊啊!!!', 'attitudes': 6, 'comment_count': 9}
{'id': '4533068674897040', 'text': '毫无办法', 'attitudes': 1, 'comment_count': 1}
{'id': '4533019937083479', 'text': '[皱眉][皱眉][皱眉][皱眉]', 'attitudes': 0, 'comment_count': 0}
{'id': '4532539320184329', 'text': '又看了一遍感觉好好玩,再转发一下。', 'attitudes': 10, 'comment_count': 6}
{'id': '4475185367478768', 'text': '每当我颓废的时候,看看这个视频,我就浑身充满了斗志!为了我和我老婆的小米之家!我可以!我能行!加油! 崔庆才丨静觅的微博视频', 'attitudes': 67, 'comment_count': 20}
{'id': '4560043586357079', 'text': '今天和我老婆相识两周年啦!!!@长泽牙妹 没错,聊天记录我还留着呢。 没错,认识第一天就互相夸帅了。', 'attitudes': 21, 'comment_count': 4}
{'id': '4559318243876350', 'text': '塑料钞票是什么?', 'attitudes': 0, 'comment_count': 3}
{'id': '4559150907923613', 'text': '恭喜!', 'attitudes': 2, 'comment_count': 0}
{'id': '4558977381958673', 'text': '又和老婆约会了,嘿嘿嘿。', 'attitudes': 5, 'comment_count': 3}
{'id': '4558976778247661', 'text': '不在运营范围//@长泽牙妹:@崔庆才丨静觅 太牛逼了//@Easy:自动驾驶出租车终于来了 这东西普及以后,买车租车都不用了吧 //@pi1ot:', 'attitudes': 1, 'comment_count': 0}
{'id': '4558976588457736', 'text': '替我老婆来一票!我拼了!', 'attitudes': 0, 'comment_count': 7}
{'id': '4557910472659663', 'text': '家里又添加一枚苹果设备,又能连蓝牙又能听广播,当然最重要的还是气质! 崔庆才丨静觅的微博视频', 'attitudes': 8, 'comment_count': 11}
{'id': '4557363392028554', 'text': '必点不要餐具???', 'attitudes': 2, 'comment_count': 5}
{'id': '4556972688938168', 'text': '老婆快看!@长泽牙妹', 'attitudes': 0, 'comment_count': 2}
{'id': '4556771409006204', 'text': '', 'attitudes': 1, 'comment_count': 2}
{'id': '4532537851914227', 'text': '最近我好像又变瘦了,跟我老婆视频的时候,突然看见了镜头里的自己的某个角度有点陈冠希的影子,于是。 :老婆,你有没有突然发现,我长得有点陈冠希的样子? :你可拉倒吧,陈冠希的最后结局都变成了赵本山。 : 后来想了想,赵本山就赵本山吧,起码有钱呢。', 'attitudes': 7, 'comment_count': 1}
{'id': '4531615743352894', 'text': '', 'attitudes': 1, 'comment_count': 0}
{'id': '4530223020512245', 'text': '都起的啥名啊?', 'attitudes': 5, 'comment_count': 4}
{'id': '4529050225741761', 'text': '下次又要好久才能见到老婆了。 济南·济南西火车站', 'attitudes': 8, 'comment_count': 0}
{'id': '4528448653499244', 'text': '', 'attitudes': 0, 'comment_count': 2}
{'id': '4528391442935808', 'text': '跟着老婆有肉吃。 济南', 'attitudes': 7, 'comment_count': 2}
{'id': '4528352155927072', 'text': '看我老婆的高难度攀岩U0001f9d7♀️', 'attitudes': 8, 'comment_count': 7}
{'id': '4527987510742108', 'text': '崔庆才丨静觅的微博视频', 'attitudes': 9, 'comment_count': 5}
{'id': '4527780430358060', 'text': '老婆我来啦!!!我老婆接到我啦!!! 济南 崔庆才丨静觅的微博视频', 'attitudes': 10, 'comment_count': 7}
{'id': '4527282934256454', 'text': '咋没有写老特?因为刷的太频繁了直接被发现了吗?', 'attitudes': 0, 'comment_count': 5}
{'id': '4475185367478768', 'text': '每当我颓废的时候,看看这个视频,我就浑身充满了斗志!为了我和我老婆的小米之家!我可以!我能行!加油! 崔庆才丨静觅的微博视频', 'attitudes': 67, 'comment_count': 20}
{'id': '4560043586357079', 'text': '今天和我老婆相识两周年啦!!!@长泽牙妹 没错,聊天记录我还留着呢。 没错,认识第一天就互相夸帅了。', 'attitudes': 21, 'comment_count': 4}
{'id': '4559318243876350', 'text': '塑料钞票是什么?', 'attitudes': 0, 'comment_count': 3}
{'id': '4559150907923613', 'text': '恭喜!', 'attitudes': 2, 'comment_count': 0}
{'id': '4558977381958673', 'text': '又和老婆约会了,嘿嘿嘿。', 'attitudes': 5, 'comment_count': 3}
{'id': '4558976778247661', 'text': '不在运营范围//@长泽牙妹:@崔庆才丨静觅 太牛逼了//@Easy:自动驾驶出租车终于来了 这东西普及以后,买车租车都不用了吧 //@pi1ot:', 'attitudes': 1, 'comment_count': 0}
{'id': '4558976588457736', 'text': '替我老婆来一票!我拼了!', 'attitudes': 0, 'comment_count': 7}
{'id': '4557910472659663', 'text': '家里又添加一枚苹果设备,又能连蓝牙又能听广播,当然最重要的还是气质! 崔庆才丨静觅的微博视频', 'attitudes': 8, 'comment_count': 11}
{'id': '4557363392028554', 'text': '必点不要餐具???', 'attitudes': 2, 'comment_count': 5}
{'id': '4556972688938168', 'text': '老婆快看!@长泽牙妹', 'attitudes': 0, 'comment_count': 2}
{'id': '4556771409006204', 'text': '', 'attitudes': 1, 'comment_count': 2}
{'id': '4527282414685304', 'text': '@长泽牙妹', 'attitudes': 0, 'comment_count': 0}
{'id': '4525957304939421', 'text': '', 'attitudes': 2, 'comment_count': 0}
{'id': '4524759205246322', 'text': '真是不可思议,突然想到了一个 idea,然后展开想了想貌似可以开拓一个新的研究领域,然后我突然就萌生了读博的想法??? 年轻人真是冲动啊,不过这说明我还年轻。', 'attitudes': 20, 'comment_count': 6}
{'id': '4522770660387278', 'text': '晚上下了雨感觉还挺凉快的,就开了个窗户,于是就进来了各种蚊子U0001f99f。 花露水没了,今晚该怎么过。', 'attitudes': 6, 'comment_count': 2}
{'id': '4521265567630156', 'text': '今天过了一个好开心的二十六周岁生日,我老婆和爸爸妈妈都给我发了大红包,老婆还给我订了哈根达斯巧克力蛋糕、三汁焖锅、牛排、小吃,超级好吃!跟室友和老婆一起云唱生日歌,我许了好多大大的愿望,希望都可以成真呀!', 'attitudes': 33, 'comment_count': 13}
{'id': '4520026164311692', 'text': '//@bluekaye: 狂欢是你们的,孤单是北京的', 'attitudes': 0, 'comment_count': 1}
{'id': '4519801776571076', 'text': '大家好久不见呀! 想我了吧,我来了![嘿哈] 我来秀老婆啦!! 我老婆也太好看了吧!!! 大家再见。', 'attitudes': 37, 'comment_count': 4}
{'id': '4516822408046339', 'text': '笑死我了,我老婆最近学英语嘛不是,昨天看到了一个英语外教头像好帅就果断报名远程口语课了。 结果今天一上课,看到这老师长这样了。 我老婆问,你疫情期间在家干嘛呢?他说我在家吃东西吃这么胖了哈哈哈哈。 真是一胖毁所有啊哈哈哈哈。 @长泽牙妹 你看还是你老公我最帅吧对不对。 ...全文', 'attitudes': 11, 'comment_count': 5}
{'id': '4475185367478768', 'text': '每当我颓废的时候,看看这个视频,我就浑身充满了斗志!为了我和我老婆的小米之家!我可以!我能行!加油! 崔庆才丨静觅的微博视频', 'attitudes': 67, 'comment_count': 20}
{'id': '4560043586357079', 'text': '今天和我老婆相识两周年啦!!!@长泽牙妹 没错,聊天记录我还留着呢。 没错,认识第一天就互相夸帅了。', 'attitudes': 21, 'comment_count': 4}
{'id': '4559318243876350', 'text': '塑料钞票是什么?', 'attitudes': 0, 'comment_count': 3}
{'id': '4559150907923613', 'text': '恭喜!', 'attitudes': 2, 'comment_count': 0}
{'id': '4558977381958673', 'text': '又和老婆约会了,嘿嘿嘿。', 'attitudes': 5, 'comment_count': 3}
{'id': '4558976778247661', 'text': '不在运营范围//@长泽牙妹:@崔庆才丨静觅 太牛逼了//@Easy:自动驾驶出租车终于来了 这东西普及以后,买车租车都不用了吧 //@pi1ot:', 'attitudes': 1, 'comment_count': 0}
{'id': '4558976588457736', 'text': '替我老婆来一票!我拼了!', 'attitudes': 0, 'comment_count': 7}
{'id': '4557910472659663', 'text': '家里又添加一枚苹果设备,又能连蓝牙又能听广播,当然最重要的还是气质! 崔庆才丨静觅的微博视频', 'attitudes': 8, 'comment_count': 11}
{'id': '4557363392028554', 'text': '必点不要餐具???', 'attitudes': 2, 'comment_count': 5}
{'id': '4556972688938168', 'text': '老婆快看!@长泽牙妹', 'attitudes': 0, 'comment_count': 2}
{'id': '4556771409006204', 'text': '', 'attitudes': 1, 'comment_count': 2}
{'id': '4516579494515542', 'text': '今天一共开了八个会,终于结束了。 北京', 'attitudes': 6, 'comment_count': 1}
{'id': '4515643564676096', 'text': '', 'attitudes': 0, 'comment_count': 0}
{'id': '4514252406334323', 'text': '我这个博客 网页链接 最近一直不太行,初步排查一直有持续的被攻击现象,加了防护、CDN 都没啥用,而且是白天不行,深夜就没啥事,难道你这攻击还分时间段休息?本来一台机子扛不住,我想着,那我多加点主机行了吧,我试着把博客迁移了 Kubernetes 加了 10 个 Pod 来 Serve 也还是超慢。我 ...全文', 'attitudes': 3, 'comment_count': 12}
{'id': '4513306594949717', 'text': '我老婆的大长腿!!', 'attitudes': 3, 'comment_count': 2}
{'id': '4513126970648098', 'text': '卧槽我已经十多天没发微博了。,赶紧水一条压压惊。', 'attitudes': 4, 'comment_count': 4}
爬取内容较多,只粘贴了一部分。

笨鸟先飞
原文地址:https://www.cnblogs.com/zoutingrong/p/13832877.html