分享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生成pdf文件的方法
Aug 04 Python
Python Tkinter简单布局实例教程
Sep 03 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
Apr 27 Python
Python 支付整合开发包的实现
Jan 23 Python
Python List cmp()知识点总结
Feb 18 Python
python基于Selenium的web自动化框架
Jul 14 Python
使用Python的turtle模块画国旗
Sep 24 Python
python3注册全局热键的实现
Mar 22 Python
Python使用OpenPyXL处理Excel表格
Jul 02 Python
python设置中文界面实例方法
Oct 27 Python
Python3接口性能测试实例代码
Jun 20 Python
Pandas数据结构之Series的使用
Mar 31 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使用百度翻译api示例分享
2014/01/31 PHP
C#使用PHP服务端的Web Service通信实例
2014/04/08 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
PHP操作文件的一些基本函数使用示例
2014/11/18 PHP
php中ftp_chdir与ftp_cdup函数用法
2014/11/18 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
CentOS系统中PHP安装扩展的方式汇总
2017/04/09 PHP
js计数器代码
2006/11/04 Javascript
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
理解Javascript_10_对象模型
2010/10/16 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
js style动态设置table高度
2014/10/21 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
js模式化窗口问题![window.dialogArguments]
2016/10/30 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
Python实现线程状态监测简单示例
2018/03/28 Python
python邮件发送smtplib使用详解
2020/06/16 Python
Tensorflow 合并通道及加载子模型的方法
2018/07/26 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
python进阶之自定义可迭代的类
2019/08/20 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
python openCV自制绘画板
2020/10/27 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
美国最好的钓鱼、狩猎和划船装备商店:Bass Pro Shops
2018/12/02 全球购物
求职信的正确写法
2014/07/10 职场文书
改进作风怎么办发言材料
2014/08/17 职场文书
教师个人教学反思
2016/02/23 职场文书
vue中div禁止点击事件的实现
2022/04/02 Vue.js