首页 > 其他分享 >爬取知乎热榜信息(BeautifulSoup方法)

爬取知乎热榜信息(BeautifulSoup方法)

时间:2024-12-19 20:30:31浏览次数:5  
标签:知乎 worksheet HotItem BeautifulSoup zhihus 爬取 headers div zhihu

目标网站:https://www.zhihu.com/hot

任务:获取标题,摘录,热度.

1.进入网页,F12-网络,没有信息就刷新一下,获取到Cookie和User-Agent.

2.导入requests模块请求网页,获取到网页源码.

3.分析下网页源码,看看需要的信息都在哪些标签下。

4.编写代码获取标签内容

5.将其存入到列表中

6.写入到xls表格中(写入xls文件时要把zhihus=[]移动到循环外,不然只会写一条)

7.写入成功

优化后的源代码(删除了多余的print):

import requests
import xlwt
from bs4 import BeautifulSoup

url = "https://www.zhihu.com/hot"
headers = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0',
           'Cookie': '_zap=99f5c205-e7ef-4daa-a8e3-29932e423cf3; q_c1=4750584755814320bba915a18840a5b3|1711178919000|1647004465000; _xsrf=orXaE1NjOPAlcNLmChwhrWCvTRMjqGR3; __zse_ck=003_b7=jsXkzPa91C/PsE9EITBjHKe/C3rYyrPFzVPps/L2Rl8kcjitGhkhA6rANiU3zuMRz/qCL9VNUzUMx1tghhxbvu6n=NdA24PXRBL+3Xj40; edu_user_uuid=edu-v1|e4e1bfef-1123-4e91-ad1a-6451e41342f7; d_c0=ACDSoWlzrxmPTvI3uQJuwQs89iikaNLQrAk=|1734051035; z_c0=2|1:0|10:1734051039|4:z_c0|80:MS4xY1BoSklnQUFBQUFtQUFBQVlBSlZUZDdTU0dqUkFWYTN4M0VReFIzcC0ydnZGXzM1bWlIcERnPT0=|27ef6bc70a40f5a31170a4b0a550e4017718394160b79236681529831e39e1ad; SESSIONID=LS0v4zfbDRVHsGRCWUV6kHq2hMG36tJZYrcA755V32D; JOID=W1EQBUNC_9MrSUpXDE9-T-NIwjwUDqDgU3wwPW0HrYlgNAwFQ_9GvUNIRlgBxCSQsEXMy8rBRcxglUYH7aS4r4k=; osd=VF4QAUxN8NMvRkVYDEtxQOxIxjMbAaDkXHM_PWkIooZgMAMKTP9CskxHRlwOyyuQtErDxMrFSsNvlUII4qu4q4Y=; tst=h'}
response = requests.get(url=url, headers=headers)
contents = response.content.decode('UTF-8')
# print(contents)

bs = BeautifulSoup(contents, 'html.parser')
div_tag = bs.find_all('div', class_='HotItem-content')
zhihus = []
for div in div_tag:
    # 标题
    title = div.find('h2', class_='HotItem-title').get_text()
    # 摘录
    p_tag = div.find('p', class_='HotItem-excerpt')
    if p_tag:
        zhailu = p_tag.get_text()
    else:
        zhailu = ""
    # 热度
    redu = div.find('div', class_='HotItem-metrics HotItem-metrics--bottom').get_text()

    zhihu = {
        '标题': title,
        '摘录': zhailu,
        '热度': redu,
    }
    zhihus.append(zhihu)
    # print(zhihus)
# 创建工作簿
workbook = xlwt.Workbook(encoding='utf - 8')
# 创建工作表
worksheet = workbook.add_sheet('知乎热榜')
# 写入表头
headers = ['标题', '摘录', '热度']
for col, header in enumerate(headers):
    worksheet.write(0, col, header)
# 写入数据
for row, zhihu in enumerate(zhihus, start=1):
    worksheet.write(row, 0, zhihu['标题'])
    worksheet.write(row, 1, zhihu['摘录'])
    worksheet.write(row, 2, zhihu['热度'])
# 保存文件
workbook.save('知乎热榜数据.xls')

如有更好的意见请指出

标签:知乎,worksheet,HotItem,BeautifulSoup,zhihus,爬取,headers,div,zhihu
From: https://blog.csdn.net/2301_81525789/article/details/144587956

相关文章

  • 爬取某鱼商品数据 (小白你也可以)
    网址:闲鱼-闲不住?上闲鱼!(goofish.com)本案例所需要用到的工具和库名如下:Pycharmrequests  可以通过pipinstall库名下载timeexecjs  注意此模块的下载的完整库名为 pipinstallpyexecjs 环境要求:    执行代码要求安装node.js插件可以在设置插......
  • 利用Python爬取百度百科词条并生成词云图
    利用Python爬取百度百科词条并生成词云图前提声明爬虫应遵守目标网站的robots.txt协议,尊重版权和用户隐私。本代码仅供学习和研究使用,不得用于商业用途。请确保在合法合规的前提下使用本代码。本代码所爬取的内容为公开可选择的百科词条信息。目录引言环境准备爬取百度......
  • 大数据可视化分析-django基于Hadoop的天气预报数据爬取与可视化分析
    文章目录程序资料获取一、项目技术二、项目内容和项目介绍三、核心代码四、效果图五、资料获取程序资料获取......
  • 简单上手Python爬虫实战:QQ邮箱收件箱信息爬取
        本次Python爬虫实战运用到的技术比原来多了一个selenium,如果有小伙伴不知道selenium是什么的话,这边建议你们出门左拐去搜一下,毕竟山海君也不会讲原理,怕误人子弟。这个实战本来是我们实验报告里的,但是感觉实战专栏里没有涉及到selenium这一部分,就放到这里了。(邮箱涉......
  • phpSpider如何实现登录态保持的数据爬取
    在使用PHP实现一个名为phpSpider的爬虫程序时,如果需要保持登录态以进行数据爬取,通常需要模拟用户登录过程,并在后续请求中携带登录后产生的认证信息(如Cookies、SessionID或Token)。以下是一个实现登录态保持的数据爬取的基本步骤:分析登录流程:确定登录表单的URL。确......
  • Python爬取数据插入mysql(简易记录)
    importmysql.connectorimportrequestsfromlxmlimporthtml#连接MySQL数据库db=mysql.connector.connect(host="?",user="?",password="?",database="?")cursor=db.cursor()company_url=......
  • 【Python网络爬虫笔记】12- Xpath快速爬取汽车之家2024年最新二手车信息
    目录一、准备工作二、读取数据三、汽车之家二手汽车网站HTML结构解析四、使用XPath解析数据本文将深入介绍如何使用Python结合XPath来爬取汽车之家二手车信息,包括对汽车之家二手汽车网站的HTML结构解析。一、准备工作首先,我们需要导入lxml库中的etree模块。这个模......
  • 有没有大佬可以帮忙看一下我基于python爬取租房数据的代码,新手第一次发帖子可能有点乱
    这是我的代码,代码基本雏形是在本网站的一位大佬的帖子里复制过来的,经过更改爬取的网页基本信息之后,发现只能爬取一个数据,真的不知道问题出现在哪里了,本人基础很薄弱很菜鸡,但还是想搞清楚问题出现在哪里,就上来求助了importrequestsfromlxmlimportetreeimportcsv#fro......
  • Python3 insloader库爬取博主视频粉丝量,点赞,互动率,国家等信息
    写在题前:之前搞Java的,今天部门的人给了我一批视频链接,问问有没有办法爬出来这一批视频链接的博主的粉丝量,以及该视频的互动率等信息。经过一番探索之后了解了insloader库。真不不得不感叹python的强大。 之前给代码把:importinstaloaderfromurllib.parseimporturlpars......
  • 《Python 爬取上海软科中国大学排名并存入表格:详解与速通指南》
     大家好啊!我是NiJiMingCheng我的博客:NiJiMingCheng上一节我们分享了安装selenium的内容,这一节我们继续来实战,这一节我们主要学习爬取上海软科中国大学排名并存入表格,本文仅以办学层次进行演示,其他数据同理可得,加油Selenium各浏览器驱动下载与配置使用(详细流程)目录结......