分享Python异步爬取知乎热榜


Posted in Python onApril 12, 2022

一、错误代码:摘要和详细的url获取不到

import asyncio
from bs4 import BeautifulSoup
import aiohttp
 
headers={
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
    'referer': 'https://www.baidu.com/s?tn=02003390_43_hao_pg&isource=infinity&iname=baidu&itype=web&ie=utf-8&wd=%E7%9F%A5%E4%B9%8E%E7%83%AD%E6%A6%9C'
}
async def getPages(url):
    async with aiohttp.ClientSession(headers=headers) as session:
        async with session.get(url) as resp:
            print(resp.status)  # 打印状态码
            html=await resp.text()
    soup=BeautifulSoup(html,'lxml')
    items=soup.select('.HotList-item')
    for item in items:
        title=item.select('.HotList-itemTitle')[0].text
        try:
            abstract=item.select('.HotList-itemExcerpt')[0].text
        except:
            abstract='No Abstract'
        hot=item.select('.HotList-itemMetrics')[0].text
        try:
            img=item.select('.HotList-itemImgContainer img')['src']
        except:
            img='No Img'
        print("{}\n{}\n{}".format(title,abstract,img))
 
if __name__ == '__main__':
    url='https://www.zhihu.com/billboard'
    loop=asyncio.get_event_loop()
    loop.run_until_complete(getPages(url))
    loop.close()

分享Python异步爬取知乎热榜

二、查看JS代码

发现详细链接、图片链接、问题摘要等都在JS里面(CSDN的开发者助手插件确实好用)

分享Python异步爬取知乎热榜

正则表达式获取上述信息:

分享Python异步爬取知乎热榜

接下来就是详细的代码啦

import asyncio
import json
import re
import aiohttp
 
headers={
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
    'referer': 'https://www.baidu.com/s?tn=02003390_43_hao_pg&isource=infinity&iname=baidu&itype=web&ie=utf-8&wd=%E7%9F%A5%E4%B9%8E%E7%83%AD%E6%A6%9C'
}
async def getPages(url):
    async with aiohttp.ClientSession(headers=headers) as session:
        async with session.get(url) as resp:
            print(resp.status)  # 打印状态码
            html=await resp.text()
 
    regex=re.compile('"hotList":(.*?),"guestFeeds":')
    text=regex.search(html).group(1)
    # print(json.loads(text))   # json换成字典格式
    for item in json.loads(text):
        title=item['target']['titleArea']['text']
        question=item['target']['excerptArea']['text']
        hot=item['target']['metricsArea']['text']
        link=item['target']['link']['url']
        img=item['target']['imageArea']['url']
        if not img:
            img='No Img'
        if not question:
            question='No Abstract'
        print("Title:{}\nPopular:{}\nQuestion:{}\nLink:{}\nImg:{}".format(title,hot,question,link,img))
 
if __name__ == '__main__':
    url='https://www.zhihu.com/billboard'
    loop=asyncio.get_event_loop()
    loop.run_until_complete(getPages(url))
    loop.close()

到此这篇关于Python异步爬取知乎热榜实例分享的文章就介绍到这了!

Python 相关文章推荐
Python转换HTML到Text纯文本的方法
Jan 15 Python
Python随机数random模块使用指南
Sep 09 Python
ubuntu中配置pyqt4环境教程
Dec 27 Python
Python 实现数据结构-循环队列的操作方法
Jul 17 Python
python实现获取单向链表倒数第k个结点的值示例
Oct 24 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
wxPython修改文本框颜色过程解析
Feb 14 Python
python使用pyecharts库画地图数据可视化的实现
Mar 25 Python
Python批量将图片灰度化的实现代码
Apr 11 Python
Python之变量类型和if判断方式
May 05 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
Oct 19 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
Mar 02 Python
尝试使用Python爬取城市租房信息
Apr 12 #Python
Python采集爬取京东商品信息和评论并存入MySQL
Apr 12 #Python
Python实现批量将文件复制到新的目录中再修改名称
Python多线程实用方法以及共享变量资源竞争问题
Apr 12 #Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 #Python
Python闭包的定义和使用方法
Apr 11 #Python
什么是Python装饰器?如何定义和使用?
Apr 11 #Python
You might like
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
php汉字转拼音的示例
2014/02/27 PHP
thinkphp模板继承实例简述
2014/11/26 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
2015/01/07 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
2016/05/09 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
2017/08/10 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
2017/08/29 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
vue编译打包本地查看index文件的方法
2018/02/23 Javascript
react实现换肤功能的示例代码
2018/08/14 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
2018/09/29 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
了解javascript中的Dom操作
2019/05/27 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
Python入门篇之列表和元组
2014/10/17 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
2018/05/25 Python
Python super()函数使用及多重继承
2020/05/06 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
快速解决pymongo操作mongodb的时区问题
2020/12/05 Python
python热力图实现简单方法
2021/01/29 Python
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
清华大学自主招生自荐信
2014/01/29 职场文书
暑假家长评语大全
2014/04/17 职场文书
服装发布会策划方案
2014/05/22 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书
Golang 实现获取当前函数名称和文件行号等操作
2021/05/08 Golang
深入浅出讲解Java8函数式编程
2022/01/18 Java/Android