分享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 相关文章推荐
win7安装python生成随机数代码分享
Dec 27 Python
python基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
python中的内置函数max()和min()及mas()函数的高级用法
Mar 29 Python
python在每个字符后添加空格的实例
May 07 Python
Django 路由系统URLconf的使用
Oct 11 Python
python用opencv批量截取图像指定区域的方法
Jan 24 Python
关于PyTorch 自动求导机制详解
Aug 18 Python
Pytorch 中retain_graph的用法详解
Jan 07 Python
python序列类型种类详解
Feb 26 Python
Pycharm配置PyQt5环境的教程
Apr 02 Python
Python-openpyxl表格读取写入的案例详解
Nov 02 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 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 分页原理详解
2009/08/21 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
做网页的一些技巧(续)
2007/02/01 Javascript
JavaScript中数组的排序、乱序和搜索实现代码
2011/11/30 Javascript
用客户端js实现带省略号的分页
2013/04/27 Javascript
JavaScript 实现类的多种方法实例
2013/05/01 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
Vue学习笔记进阶篇之函数化组件解析
2017/07/21 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
Python实现字典的遍历与排序功能示例
2017/12/23 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
Python切图九宫格的实现方法
2019/10/10 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
python入门:argparse浅析 nargs='+'作用
2020/07/12 Python
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
Marriott中国:万豪国际酒店查询预订
2016/09/02 全球购物
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
妇产医师自荐信
2014/01/29 职场文书
《临死前的严监生》教学反思
2014/02/13 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
戒赌保证书
2015/05/11 职场文书
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python