python3制作捧腹网段子页爬虫

下面是关于“python3制作捧腹网段子页爬虫”的完整攻略:

一、准备工作

1. 安装Python3

首先需要安装Python3,可以到官网下载安装包。

2. 安装第三方库requests和BeautifulSoup4

在Python中我们可以通过第三方库来实现网页爬虫,这里我们使用requests和BeautifulSoup4两个库,需要先安装:

pip install requests
pip install beautifulsoup4

二、分析网页结构

在进行网页爬取之前,需要对所需数据所在的网页进行分析,主要有以下几个步骤:

1. 打开网页

使用requests模块的get方法可以获取网页的HTML代码,实现方法如下:

import requests

url = 'http://www.pengfu.com/xiaohua_1.html'
response = requests.get(url)
print(response.text)

2. 解析HTML代码

使用BeautifulSoup4模块可以解析HTML代码,将其转换成树形结构,方便后续提取数据。

import requests
from bs4 import BeautifulSoup

url = 'http://www.pengfu.com/xiaohua_1.html'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
print(soup.prettify())

3. 查找数据

通过观察网页代码,确定需要提取的数据所在的标签及其属性。例如,捧腹网的段子页中每个段子都是包含在<div>标签中,并且有class属性为content-img clearfix pt10 relative

<div class="content-img clearfix pt10 relative">
    <h1>每个人都有一颗明亮的星星……</h1>
    <div class="content-txt pt10">
        <a href="/xiaohua/202003/3547640.html" target="_blank" class="link">
            <img src="/uploads/allimg/200324/1-200324142123.jpg" height="170" width="170">
            <span class="content-span"></span>
        </a>
        小兔子问母兔子:“每个人都有一颗明亮的星星,可是我没有一颗明亮的星星,这是怎么回事啊?”
    </div>
</div>

三、提取数据

确定需要提取的数据所在的标签及其属性后,可以使用BeautifulSoup4提供的方法进行提取,如果需要获取多个数据,可以使用find_all方法,返回一个列表。

例如,获取第一页所有的段子内容和图片链接,实现代码如下:

import requests
from bs4 import BeautifulSoup

url = 'http://www.pengfu.com/xiaohua_1.html'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
items = soup.find_all('div', class_='content-img clearfix pt10 relative')
for item in items:
    title = item.h1.text.strip()  # 获取段子标题
    content = item.find('div', class_='content-txt').text.strip()  # 获取段子内容
    img_url = item.img['src']  # 获取该段子的图片链接
    print(title, content, img_url)

四、翻页爬取

如果需要爬取多页内容,可以通过修改URL来实现,例如要获取前10页的段子,可以这样更改URL:http://www.pengfu.com/xiaohua_1_0.htmlhttp://www.pengfu.com/xiaohua_1_9.html

具体代码如下:

import requests
from bs4 import BeautifulSoup

for i in range(10):
    url = 'http://www.pengfu.com/xiaohua_1_{}.html'.format(i)
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    items = soup.find_all('div', class_='content-img clearfix pt10 relative')
    for item in items:
        title = item.h1.text.strip()
        content = item.find('div', class_='content-txt').text.strip()
        img_url = item.img['src']
        print(title, content, img_url)

以上就是关于“python3制作捧腹网段子页爬虫”的完整攻略了,希望能对你有所帮助。

示例1:

如果我们要获取每个段子的评论数和点赞数,可以通过在段子链接后加上.html获取该段子详情页的HTML代码,再通过解析HTML获取评论数和点赞数。

import requests
from bs4 import BeautifulSoup

for i in range(10):
    url = 'http://www.pengfu.com/xiaohua_1_{}.html'.format(i)
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    items = soup.find_all('div', class_='content-img clearfix pt10 relative')
    for item in items:
        title = item.h1.text.strip()
        content = item.find('div', class_='content-txt').text.strip()
        img_url = item.img['src']

        # 获取段子详情页HTML代码
        detail_url = item.a['href']
        detail_response = requests.get(detail_url)
        detail_soup = BeautifulSoup(detail_response.text, 'html.parser')
        num_list = detail_soup.find_all('span', class_='stats-vote')
        vote_num = num_list[0].i.text  # 获取点赞数
        comment_num = num_list[1].i.text  # 获取评论数

        print(title, content, img_url, vote_num, comment_num)

示例2:

如果我们想将数据保存到本地文件中,可以使用Python内置的的文件操作方法进行实现。

import requests
from bs4 import BeautifulSoup

with open('pengfu_jokes.txt', 'w', encoding='utf-8') as f:
    for i in range(10):
        url = 'http://www.pengfu.com/xiaohua_1_{}.html'.format(i)
        response = requests.get(url)
        soup = BeautifulSoup(response.text, 'html.parser')
        items = soup.find_all('div', class_='content-img clearfix pt10 relative')
        for item in items:
            title = item.h1.text.strip()
            content = item.find('div', class_='content-txt').text.strip()
            img_url = item.img['src']

            # 获取段子详情页HTML代码
            detail_url = item.a['href']
            detail_response = requests.get(detail_url)
            detail_soup = BeautifulSoup(detail_response.text, 'html.parser')
            num_list = detail_soup.find_all('span', class_='stats-vote')
            vote_num = num_list[0].i.text  # 获取点赞数
            comment_num = num_list[1].i.text  # 获取评论数

            f.write(title + '\n')
            f.write(content + '\n')
            f.write(img_url + '\n')
            f.write(vote_num + '\n')
            f.write(comment_num + '\n')
            f.write('\n')

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python3制作捧腹网段子页爬虫 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 如何在Python中检索数组的整个行或列

    在Python中,可以使用NumPy库提供的数组索引功能来检索数组的整个行或列。下面是检索数组的整个行或列的详细攻略: 检索整个行 要检索整个行,可以简单地通过数组的索引来实现。具体地,你可以使用冒号(:)表示要检索整个行,如下所示: import numpy as np a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, …

    python-answer 2023年3月25日
    00
  • 简单介绍Python的轻便web框架Bottle

    简介 Bottle是一种轻型Python Web框架,它只有一个文件,可以方便地与其他代码集成。Bottle支持Python标准库(如Werkzeug,Blinker,SimpleTemplate,etc),并且可以运行在Python 2.5 + 和Python 3.0+上,具有良好的兼容性。Bottle框架的语法和使用方式与Flask框架相似, 是学习Fl…

    python 2023年5月19日
    00
  • 使用Python 统计文件夹内所有pdf页数的小工具

    使用Python 统计文件夹内所有pdf页数的小工具 背景 当我们需要查看PDF文件夹中所有文件的页数时,可能需要一个一个文件打开查看,手动记录页数。这样会非常耗费时间并且繁琐。因此,我们可以使用Python编写一个小工具来快速统计所有PDF文件的页数。 实现步骤 安装PyPDF2库: pip install PyPDF2 编写Python脚本 import…

    python 2023年6月6日
    00
  • Python程序检查单词是否有小写字母

    【问题标题】:Python program to check if the word has an alphabet lowercase letter or notPython程序检查单词是否有小写字母 【发布时间】:2023-04-04 08:22:01 【问题描述】: 我试图制作一个program 来检查单词中是否有字母,但是当它运行时它会显示所有字母,…

    Python开发 2023年4月6日
    00
  • python – 有没有办法使用列表推导根据提取的子列表的公共索引创建列表?

    【问题标题】:python – is there a way to use list comprehension to create a list based on the extracted common indexes of sublists?python – 有没有办法使用列表推导根据提取的子列表的公共索引创建列表? 【发布时间】:2023-04-02…

    Python开发 2023年4月8日
    00
  • python将excel转换为csv的代码方法总结

    接下来我来详细讲解“Python将Excel转换为CSV的代码方法总结”的完整实例教程。 1. 为什么使用Python将Excel转换为CSV 在工作中,我们通常需要对数据进行处理和展示。其中,Excel电子表格是我们常用的工具之一。然而,在一些场景下,我们需要将Excel转换为可以直接导入到数据库中的CSV格式文件。这时,借助Python可以更加快捷高效地…

    python 2023年5月13日
    00
  • 利用python对excel中一列的时间数据更改格式操作

    这里是利用Python对Excel中一列的时间数据更改格式的完整实例教程: 准备工作 安装Python,并配置好环境变量。 安装Python的第三方库xlrd和xlwt。可以使用pip命令进行安装: pip install xlrd pip install xlwt 准备Excel文件,其中包含需要更改格式的时间数据。 实现步骤 导入xlrd和xlwt库。 …

    python 2023年5月13日
    00
  • Python利用Selenium实现弹出框的处理

    下面为你详细讲解“Python利用Selenium实现弹出框的处理”的完整攻略。 一、前置知识 在学习之前,你需要掌握以下知识: Python编程语言基础; Selenium自动化测试工具的基础使用方法; 网页弹出框的基础概念。 二、Python利用Selenium实现弹出框的处理 1. 弹出框的种类 网页弹出框有多种类型,常见的有三种: alert框 co…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部