分享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 18 Python
Python中的getopt函数使用详解
Jul 28 Python
简单讲解Python编程中namedtuple类的用法
Jun 21 Python
python3 破解 geetest(极验)的滑块验证码功能
Feb 24 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
基于Django与ajax之间的json传输方法
May 29 Python
Python日期时间对象转换为字符串的实例
Jun 22 Python
python字符串切割:str.split()与re.split()的对比分析
Jul 16 Python
关于PyTorch 自动求导机制详解
Aug 18 Python
python设置随机种子实例讲解
Sep 12 Python
django项目中新增app的2种实现方法
Apr 01 Python
如何用tempfile库创建python进程中的临时文件
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
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
生成php程序的php代码
2008/04/07 PHP
php基本函数汇总
2015/07/09 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
2019/02/25 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
AlertBox 弹出层信息提示框效果实现步骤
2010/10/11 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
Javascript的闭包详解
2014/12/26 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
JavaScript中创建字典对象(dictionary)实例
2015/03/31 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
获取阴历(农历)和当前日期的js代码
2016/02/15 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
2016/11/18 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
2017/07/17 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
详细介绍Python中的偏函数
2015/04/27 Python
Python中使用不同编码读写txt文件详解
2015/05/28 Python
Python for Informatics 第11章之正则表达式(四)
2016/04/21 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
PyQt5+requests实现车票查询工具
2019/01/21 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
2020/03/30 Python
tensorflow pb to tflite 精度下降详解
2020/05/25 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
python 录制系统声音的示例
2020/12/21 Python
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
2015年学校党支部工作总结
2015/04/01 职场文书
学校运动会开幕词
2016/03/03 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers
MySQL 自定义变量的概念及特点
2021/05/13 MySQL