分享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实现一个简单的银行转账操作
Mar 06 Python
python学生信息管理系统
Mar 13 Python
Python爬虫信息输入及页面的切换方法
May 11 Python
使用matplotlib画散点图的方法
May 25 Python
tensorflow实现逻辑回归模型
Sep 08 Python
Python面向对象之类的内置attr属性示例
Dec 14 Python
python opencv实现证件照换底功能
Aug 19 Python
Python爬取破解无线网络wifi密码过程解析
Sep 17 Python
python对象转字典的两种实现方式示例
Nov 07 Python
Python利用PyPDF2库获取PDF文件总页码实例
Apr 03 Python
django前端页面下拉选择框默认值设置方式
Aug 09 Python
python分分钟绘制精美地图海报
Feb 15 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内存溢出问题的解决方法
2013/06/25 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
php获取文章上一页与下一页的方法
2014/12/01 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
PHP判断是否为空的几个函数对比
2015/04/21 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
DOM相关内容速查手册
2007/02/07 Javascript
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
基于豆瓣API+Angular开发的web App
2015/01/02 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
Underscore源码分析
2015/12/30 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
2016/06/29 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
原生JS实现弹幕效果的简单操作指南
2020/11/10 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
python 正则表达式 概述及常用字符
2009/05/04 Python
Python 专题三 字符串的基础知识
2017/03/19 Python
python爬虫爬取快手视频多线程下载功能
2018/02/28 Python
JavaScript中的模拟事件和自定义事件实例分析
2018/07/27 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
mysql_pconnect()和mysql_connect()有什么区别
2012/05/25 面试题
家长会演讲稿范文
2014/01/10 职场文书
土木工程专业推荐信
2014/02/19 职场文书
幼儿园老师寄语
2014/04/03 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
继续教育个人总结
2015/03/03 职场文书
毕业感言怎么写
2015/07/31 职场文书