博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day_5:Ajax数据爬取
阅读量:5123 次
发布时间:2019-06-13

本文共 2146 字,大约阅读时间需要 7 分钟。

浏览器调试模式下Network选项XHR筛选出Ajax请求(Request Headers的X-Requested-With:XMLHttpRequest)

#  个人微博爬取,存入csv(字段:时间、评论、转发、点赞、内容)import requestsimport jsonimport csvdef get_html(path, page):    params = {        'type': 'uid',        'value': 2830678474,        'containerid': 1076032830678474,        'page': page    }    headers = {        'Referer': 'https://m.weibo.cn/u/2830678474',        'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'    }    try:        r = requests.get(url=path, params=params, headers=headers)        r.raise_for_status()        return r.text    except:        print('status_code is not 200')        return Nonedef detail_html(txt):    data = txt.get('data')    page = data.get('cardlistInfo').get('page')    cards = data.get('cards')    with open('weibo.csv', 'a', encoding='utf-8') as csvfile:        fieldnames = ['created_at', 'attitudes_count', 'comments_count', 'reposts_count', 'content']        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)        for card in cards:            if card.get('card_type') != 9:  # 去除广告                continue            mblog = card.get('mblog')            data = {                'created_at' : mblog.get('created_at'),  # 创建时间                'attitudes_count': mblog.get('attitudes_count'),  # 点赞数量                'comments_count': mblog.get('comments_count'),  # 评论数量                'reposts_count': mblog.get('reposts_count'),  # 转发数量                'content': mblog.get('text')  # 文本内容            }            writer.writerow(data)    return pageif __name__ == '__main__':    path = 'https://m.weibo.cn/api/container/getIndex'    page = 1    with open('weibo.csv', 'w', encoding='utf-8') as csvfile:        fieldnames = ['created_at', 'attitudes_count', 'comments_count', 'reposts_count', 'content']        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)        writer.writeheader()    while page:        txt = json.loads(get_html(path, page))        if txt:            page = detail_html(txt)            print(page)

 

转载于:https://www.cnblogs.com/jp-mao/p/10032876.html

你可能感兴趣的文章
NOIP2013 提高组 Day1
查看>>
cocos2dx 3.x simpleAudioEngine 长音效被众多短音效打断问题
查看>>
存储(硬件方面的一些基本术语)
查看>>
观察者模式
查看>>
Weka中数据挖掘与机器学习系列之基本概念(三)
查看>>
Win磁盘MBR转换为GUID
查看>>
大家在做.NET B/S项目的时候多用什么设技术啊?
查看>>
Java SE和Java EE应用的性能调优
查看>>
Android设计模式系列--原型模式
查看>>
免费的论文查重网站
查看>>
C语言程序第一次作业
查看>>
leetcode-Sort List
查看>>
中文词频统计
查看>>
了解node.js
查看>>
想做移动开发,先看看别人怎么做
查看>>
Eclipse相关集锦
查看>>
虚拟化架构中小型机构通用虚拟化架构
查看>>
继承条款effecitve c++ 条款41-45
查看>>
Java泛型的基本使用
查看>>
1076 Wifi密码 (15 分)
查看>>