分享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计算牛顿迭代多项式实例分析
May 07 Python
在Python中使用swapCase()方法转换大小写的教程
May 20 Python
简单了解什么是神经网络
Dec 23 Python
python批量实现Word文件转换为PDF文件
Mar 15 Python
django-allauth入门学习和使用详解
Jul 03 Python
Python Django 简单分页的实现代码解析
Aug 21 Python
python生成并处理uuid的实现方式
Mar 03 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
Python如何使用input函数获取输入
Aug 06 Python
Python修改DBF文件指定列
Dec 19 Python
如何用用Python将地址标记在地图上
Feb 07 Python
Python趣味实战之手把手教你实现举牌小人生成器
Jun 07 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动态图像的创建
2006/10/09 PHP
PHP 翻页 实例代码
2009/08/07 PHP
php include类文件超时问题处理
2015/02/06 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
JavaScript中的style.display属性操作
2013/03/27 Javascript
GridView中获取被点击行中的DropDownList和TextBox中的值
2013/07/18 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
jQuery Validate表单验证深入学习
2015/12/18 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
javascript html5移动端轻松实现文件上传
2020/03/27 Javascript
JS、jQuery中select的用法详解
2016/04/21 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
python使用append合并两个数组的方法
2015/04/28 Python
解决python3 网络请求路径包含中文的问题
2018/05/10 Python
python实现C4.5决策树算法
2018/08/29 Python
Python中包的用法及安装
2020/02/11 Python
python多维数组分位数的求取方式
2020/03/03 Python
诗普兰迪官方网站:Splendid
2018/09/18 全球购物
四年的大学生生活自我评价
2013/12/09 职场文书
应聘自荐信
2013/12/14 职场文书
生物制药自我鉴定
2014/01/25 职场文书
美术国培研修感言
2014/02/12 职场文书
文化宣传方案
2014/03/13 职场文书
实习公司领导推荐函
2014/05/21 职场文书
在职证明书模板
2015/06/15 职场文书
如何优化vue打包文件过大
2022/04/13 Vue.js