分享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之用Python计算
Sep 12 Python
10种检测Python程序运行时间、CPU和内存占用的方法
Apr 01 Python
python计算对角线有理函数插值的方法
May 07 Python
python实现用户登录系统
May 21 Python
Django admin美化插件suit使用示例
Dec 12 Python
python爬虫爬取快手视频多线程下载功能
Feb 28 Python
python实现逆序输出一个数字的示例讲解
Jun 25 Python
Python求离散序列导数的示例
Jul 10 Python
Python中的单下划线和双下划线使用场景详解
Sep 09 Python
python多进程并发demo实例解析
Dec 13 Python
Python devel安装失败问题解决方案
Jun 09 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
Jan 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
Chrome Web App开发小结
2014/09/04 PHP
php实现curl模拟ftp上传的方法
2015/07/29 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
2010/03/17 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
vue实现分页加载效果
2019/12/24 Javascript
jQuery实现异步上传一个或多个文件
2020/08/17 jQuery
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
python 爬虫出现403禁止访问错误详解
2017/03/11 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
Python判断是否json是否包含一个key的方法
2018/12/31 Python
python实现五子棋小程序
2019/06/18 Python
pycharm new project变成灰色的解决方法
2019/06/27 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
2019/12/31 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
详解使用HTML5 Canvas创建动态粒子网格动画
2016/12/14 HTML / CSS
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
Omio荷兰:预订火车、巴士和机票
2018/11/04 全球购物
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
英超联赛的首选足球:Mitre足球
2019/05/06 全球购物
.NET程序员的数据库面试题
2012/10/10 面试题
中学教师岗位职责
2013/11/26 职场文书
酒店led欢迎词
2014/01/09 职场文书
4S店售后客服自我评价
2014/04/09 职场文书
婚礼证婚人演讲稿
2014/09/13 职场文书
工伤事故证明
2014/10/20 职场文书
英文商务邀请函范文
2015/01/31 职场文书
python开发制作好看的时钟效果
2022/05/02 Python