分享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实现绘制树枝简单示例
Jul 24 Python
深入理解python对json的操作总结
Jan 05 Python
python爬虫获取京东手机图片的图文教程
Dec 29 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
Feb 26 Python
python多个模块py文件的数据共享实例
Jan 11 Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
Feb 20 Python
python中翻译功能translate模块实现方法
Dec 17 Python
在Windows下安装配置CPU版的PyTorch的方法
Apr 02 Python
Python Django ORM连表正反操作技巧
Jun 13 Python
Python List remove()实例用法详解
Aug 02 Python
python人工智能human learn绘图可创建机器学习模型
Nov 23 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支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
PHP中static关键字以及与self关键字的区别
2015/07/01 PHP
PHP实现电商订单自动确认收货redis队列
2017/05/17 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
充分发挥Node.js程序性能的一些方法介绍
2015/06/23 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
2015/11/07 Javascript
BootStrap按钮标签及基本样式
2016/11/23 Javascript
使用BootStrap实现悬浮窗口的效果
2016/12/13 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
2016/12/19 Javascript
移动端点击态处理的三种实现方式
2017/01/12 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
浅谈Vue 数据响应式原理
2018/05/07 Javascript
Node.js的进程管理的深入理解
2019/01/09 Javascript
实例分析编写vue组件方法
2019/02/12 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
Python CSV模块使用实例
2015/04/09 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
解析Python3中的Import
2019/10/13 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
毕业证丢失证明
2014/01/15 职场文书
《盲人摸象》教学反思
2014/02/16 职场文书
医学生临床实习自我评价
2014/03/07 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
党的生日活动方案
2014/08/15 职场文书
小石潭记导游词
2015/02/03 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
2015年中学图书馆工作总结
2015/07/22 职场文书
《实心球》教学反思
2016/02/23 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
python如何将mat文件转为png
2022/07/15 Python