分享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生成随机验证码(中文验证码)示例
Apr 03 Python
python实现监控linux性能及进程消耗性能的方法
Jul 25 Python
Python命令行参数解析模块getopt使用实例
Apr 13 Python
对pandas的行列名更改与数据选择详解
Nov 12 Python
对Python中创建进程的两种方式以及进程池详解
Jan 14 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
Oct 23 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
Python dict和defaultdict使用实例解析
Mar 12 Python
Pycharm配置PyQt5环境的教程
Apr 02 Python
django ORM之values和annotate使用详解
May 19 Python
python Selenium 库的使用技巧
Oct 16 Python
Pytorch 如何实现LSTM时间序列预测
May 17 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 has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
2013/08/07 PHP
MongoDB在PHP中的常用操作小结
2014/02/20 PHP
WIN8.1下搭建PHP5.6环境
2015/04/29 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
jquery中常用的SET和GET
2009/01/13 Javascript
到处都是jQuery选择器的年代 不了解它们的性能,行吗
2012/06/18 Javascript
JQuery操作tr和td内容的方法实例
2013/03/06 Javascript
ListBox实现上移,下移,左移,右移的简单实例
2014/02/13 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
微信小程序中用WebStorm使用LESS
2017/03/08 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
2018/01/15 Javascript
解决VUE框架 导致绑定事件的阻止冒泡失效问题
2018/02/24 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
[01:03:27]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
在Python的Django框架中编写编译函数
2015/07/20 Python
使用Python脚本和ADB命令实现卸载App
2017/02/10 Python
python+selenium开发环境搭建图文教程
2017/08/11 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
关于box-sizing的全面理解
2016/07/28 HTML / CSS
HTML5中Canvas与SVG的画图原理比较
2013/01/16 HTML / CSS
Mansur Gavriel官网:纽约市的一个设计品牌
2019/05/02 全球购物
合伙经营协议书范本
2014/04/18 职场文书
建材投资建议书
2014/05/16 职场文书
慰问信范文
2015/02/14 职场文书
电工实训心得体会
2016/01/14 职场文书