分享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 表达式和语句及for、while循环练习实例
Jul 07 Python
Python分支结构(switch)操作简介
Jan 17 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
May 25 Python
使用python画个小猪佩奇的示例代码
Jun 06 Python
python多任务及返回值的处理方法
Jan 22 Python
实例讲解Python脚本成为Windows中运行的exe文件
Jan 24 Python
Django框架反向解析操作详解
Nov 28 Python
对Python 字典元素进行删除的方法
Jul 31 Python
简述python Scrapy框架
Aug 17 Python
如何基于Python pygame实现动画跑马灯
Nov 18 Python
Python Process创建进程的2种方法详解
Jan 25 Python
Python中的程序流程控制语句
Feb 24 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
新浪新闻小偷
2006/10/09 PHP
BBS(php & mysql)完整版(八)
2006/10/09 PHP
php+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
PHP curl 获取响应的状态码的方法
2014/01/13 PHP
PHP中redis的用法深入解析
2014/02/20 PHP
将php数组输出html表格的方法
2014/02/24 PHP
php判断是否为json格式的方法
2014/03/04 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
jQuery 使用个人心得
2009/02/26 Javascript
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
PHP守护进程实例
2015/03/06 Javascript
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
Javascript实现飞动广告效果的方法
2015/05/25 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
bootstrap实现每隔5秒自动轮播效果
2016/12/20 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
javascript 中关于array的常用方法详解
2017/05/05 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
2017/12/28 Javascript
详解angular应用容器化部署
2018/08/14 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
详解JavaScript 高阶函数
2020/09/14 Javascript
零基础写python爬虫之神器正则表达式
2014/11/06 Python
python图片验证码生成代码
2016/07/02 Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
2018/06/06 Python
python如何实现一个刷网页小程序
2018/11/27 Python
英国银首饰公司:e&e Jewellery
2021/02/11 全球购物
PHP开发的一般流程
2013/08/13 面试题
ktv中秋节活动方案
2014/01/30 职场文书
幼儿园教师教育感言
2014/02/28 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书