python爬虫实战(8)--获取虎pu热榜

news/2024/7/19 8:35:44 标签: python, 爬虫, 开发语言

1. 需要的类库

import requests
from bs4 import BeautifulSoup
import pandas as pd

2. 请求地址

def fetch_data():
    url = "https://bbs.xxx.com/"  # Replace with the actual base URL
    response = requests.get(url)

    if response.status_code == 200:
        return response.content
    else:
        print(f"Error fetching data. Status code: {response.status_code}")
        return None

3. 编码

def parse_html(html_content, base_url):
    soup = BeautifulSoup(html_content, 'html.parser')
    items = soup.find_all('div', class_='text-list-model')
    first_item = items[0]
    contents = first_item.contents
    data = []
    for item in contents:
        if item.select_one('.t-title') == None:
            continue
        title = item.select_one('.t-title').text.strip()
        relative_url = item.select_one('a')['href']
        full_url = base_url + relative_url
        lights = item.select_one('.t-lights').text.strip()
        replies = item.select_one('.t-replies').text.strip()

        data.append({
            'Title': title,
            'URL': full_url,
            'Lights': lights,
            'Replies': replies
        })

    return data

注意:分析标签,这里加了非意向标签的跳过处理

4. 导出表格

def create_excel(data):
    df = pd.DataFrame(data)
    df.to_excel('hupu-top.xlsx', index=False)
    print("Excel file created successfully.")

测试

    base_url = "https://bbs.xx.com" #替换成虎pu首页地址
    html_content = fetch_data()

    if html_content:
        forum_data = parse_html(html_content, base_url)
        create_excel(forum_data)
    else:
        print("Failed to create Excel file.")

5. 成果展示

在这里插入图片描述


http://www.niftyadmin.cn/n/5320024.html

相关文章

【CCF-A】中科院和国自然科学基金共同主办,IF稳定增长,国人占比高达96%

我处【甄选好刊】栏目,定期为读者们带来各领域热门期刊的解读,包括期刊的分区、影响因子、预警情况、审稿速度、接收领域等投稿者关心的各个方面,为广大科研工作者提供投稿指南,希望您在论文发表过程中少走弯路。 本期小编给大家…

【linux】利用echo命令实现不换行的倒计时

1、实现5秒倒计时 #!/bin/shfor i in `seq 5`doecho -ne "$i\b"sleep 1 done 2、实现“时:分:秒”格式的倒计时 这个脚本会从5小时开始,每秒更新一次,以时:分:秒的格式显示倒计时,实现一个从5小时倒计时到0的功能。echo -ne "\r"会将光标移动到当前行…

windos exe 以服务的形式运行(开机运行)

windos 品台编写的 小工具 exe 或者 批处理 .bat 经常需要开机自启动,可以直接把它 加在开启启动项,或者做成 windos服务,这样既可以开机自动启动而且还可以 防止误触关闭掉; windos 以服务启动 exe/bat 的通用方式&#xff1…

JS输出为[object object]取值问题

问题:页面跳转传参 传参前数据能打印出来,传参后显示[object object]且无法取值 解决 传递 接收后端返回的json对象通常是一个字符串类型的object 所以 通过 JSON.stringify() 把 JavaScript 对象转换为字符串。 my.navigateTo({url: /pages/compo…

【PaperReading】3. PTP

Category Content 论文题目 Position-guided Text Prompt for Vision-Language Pre-training Code: ptp 作者 Alex Jinpeng Wang (Sea AI Lab), Pan Zhou (Sea AI Lab), Mike Zheng Shou (Show Lab, National University of Singapore), Shuicheng Yan (Sea AI Lab) 另一篇…

Python类装饰器跟踪委托对象的属性访问

1 Python类装饰器跟踪委托对象的属性访问 类装饰器通过添加逻辑层,管理实例接口的访问。 通过委托的方式类跟踪对象属性的访问。 通过拦截未定义属性的访问,并且转向委托对象的属性访问,来实现委托。 1.1 非装饰器委托 描述 python通过…

Flutter循环遍历数组获取索引值

Flutter如何循环遍历数组获取索引值呢?我们可以通过下面方法。 Flutter 循环遍历数组获取索引值 list tabs[{},{},{}];tabs.asMap().keys.map((item)>Container(child:Text("${索引值item}"), )).toList() 要获取某一项只能tabs[索引] 来获取 示例&…

87.乐理基础-记号篇-反复记号(一)反复、跳房子

内容参考于:三分钟音乐社 上一个内容:86.乐理基础-记号篇-速度记号-CSDN博客 首先是反复记号表总结图: 当前是写前两个记号,其余记号后面写:这些反复记号最主要的目的很简单,还是为了节约纸张&#xff0c…