分享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深入学习之特殊方法与多范式
Aug 31 Python
Python实现PS滤镜的万花筒效果示例
Jan 23 Python
python实现m3u8格式转换为mp4视频格式
Feb 28 Python
Django如何配置mysql数据库
May 04 Python
python绘制简单彩虹图
Nov 19 Python
用python代码将tiff图片存储到jpg的方法
Dec 04 Python
浅谈Python 多进程默认不能共享全局变量的问题
Jan 11 Python
python中while和for的区别总结
Jun 28 Python
详解Python list和numpy array的存储和读取方法
Nov 06 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
Mar 14 Python
django执行数据库查询之后实现返回的结果集转json
Mar 31 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 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 zlib压缩和解压缩swf文件的代码
2008/12/30 PHP
PHP设计模式之结构模式的深入解析
2013/06/13 PHP
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
微信小程序使用第三方库Underscore.js步骤详解
2016/09/27 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
Linux下为不同版本python安装第三方库
2016/08/31 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
2019/06/17 Python
django中forms组件的使用与注意
2019/07/08 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
canvas之自定义头像功能实现代码示例
2017/09/29 HTML / CSS
教师实习自我鉴定
2013/12/18 职场文书
如何写好升职自荐信
2014/01/06 职场文书
教师职称自我鉴定
2014/02/12 职场文书
农行心得体会
2014/09/02 职场文书
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
学校食品安全责任书
2015/01/29 职场文书
小学生五一劳动节演讲稿
2015/03/18 职场文书
CAD实训总结范文
2015/08/03 职场文书
《春酒》教学反思
2016/02/22 职场文书
angular异步验证器防抖实例详解
2022/03/31 Javascript
2022微信温控新功能上线
2022/05/09 数码科技
如何基于python实现单目三维重建详解
2022/06/25 Python