注意微博域名!!
微博有好几个网页域名,这里我只用到了两个就简单介绍两个,分别是:weibo.com和m.weibo.cn
这两个的元素布局方式不一样,展示的信息也不一样
这里我用weibo.com爬取用户主页,用m.weibo.cn爬取超话推文
具体情况具体分析最好两个都打开看看最符合自己要求的是哪个,看好了再爬!!!
1.找到要爬取的网页
去到超话--开发者模式--网络--选择HXR过滤--找到包含所有信息的文件(个人经验选择getIndex?extparam=......这样格式的)--预览--检查是否有我们需要的
可以点进网址URL查看具体元素,便于搜索(ctrl+f)
确认后,复制URL
2.设置 headers和cookie
headers = {
'Cookie':'',
'authority': 'm.weibo.cn',
'Cache-Control':'',
'accept': '',
'accept-language': '',
'Referer':'',
'sec-ch-ua': '',
'sec-ch-ua-mobile': '',
'sec-ch-ua-platform': '',
'sec-fetch-dest': '',
'sec-fetch-mode': '',
'sec-fetch-site': '',
'sec-fetch-user': '',
'upgrade-insecure-requests': '',
'user-agent': '',
}
这里给出的代码参数可能不完全,有些没有提及,如果能爬出来就不用管,页面响应失败就增加请求头参数
3.根据需求观察网页变化调试代码
根据需求点击网页,观察页面变化,一步步调试,这个阶段最花时间!!!
这一步的重点是观察负载里面的参数变化
比如,按最新评论或者热门来分类
再点击 热门
可以观察到是containerid参数的后缀在变化
4.获取网页
注意,获取后的文件格式!!如果是按照我的步骤来的,获取后是json格式
response = requests.get(url=url, headers=headers).json()
# print(response)
card_lists = response.get('data').get('cards')[-1].get('card_group')
# 字典才有get方法,列表要[0]之后再用get(前提是列表的值为字典)
字典才有get方法,列表要[0]之后再用get(前提是列表的值为字典)
5.获取内容
后面就是常规的内容获取,原博客也有具体代码我就不赘述了