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自然语言处理之切分算法详解 在自然语言处理中,切分算法是一种常见的技术,它可以将一段文本切分成单词或者词组。本文中,我们将讲解切分算法的原理、实现以及两个示例说明。 切分算法原理 切分算是一种将文本切分成单词或者词组的术。在切分算法中,我们需要考虑以下几个问题: 如何定义单或者词组? 如何处理标点符号和其他特殊字符? 如何处理大小写和缩写? 在切…

    python 2023年5月13日
    00
  • Python matplotlib绘图设置图例案例

    下面我为大家详细讲解“Python matplotlib绘图设置图例案例”的完整攻略。 1. 前言 在使用Python的matplotlib库进行数据可视化时,我们经常需要在图中添加图例。图例可帮助我们说明数据的含义和不同线条或颜色的区分,使我们的图表更加清晰易懂。本文将介绍如何在matplotlib中设置图例,以及两个示例来演示如何在不同的情况下添加图例。…

    python 2023年5月19日
    00
  • python 线程的五个状态

    Python线程的五个状态包括: 新建状态(New) 就绪状态(Runnable) 运行状态(Running) 阻塞状态(Blocked) 终止状态(Terminated) 下面我们按照状态的顺序,详细讲解每一个状态及其相应的操作。 1. 新建状态(New) 新建状态是线程被创建后进入的状态。在新建状态中,子线程是无法运行的。需要通过调用start()方法进…

    python 2023年5月13日
    00
  • python实现的文件夹清理程序分享

    下面是“Python实现的文件夹清理程序分享”的完整攻略: 什么是文件夹清理程序? 文件夹清理程序是一种能够帮助用户自动化清理文件夹的小工具。通过编写Python程序,我们可以实现自动删除指定文件夹下的指定文件类型,或按照时间等条件自动归档文件等功能。 实现步骤 第一步:导入必要的库 在编写Python程序前,我们需要导入必要的库。通常情况下,我们需要导入 …

    python 2023年6月3日
    00
  • python中列表对象pop()方法的使用说明

    以下是对“Python中列表对象pop()方法的使用说明”的详细攻略: 什么是pop()方法 在Python中,列表一种常用的数据结构,它可以存储一个有序序列的元素。pop()方法是Python提供的操作列表的方法之一,它可以用于移除列表中指定位置的元素,并返回被移除的元素的值。 pop()方法的基本语法 list.pop([index=-1]) 其中,li…

    python 2023年6月6日
    00
  • 详解Python 合并词典的几种方式

    Python中实现合并词典(字典)有多种方式,下面将详细讲解几种常见的方法及其使用方法。 方法一:update方法 update() 方法可用于将一个词典中的键/值对更新到另一个词典中。如果被更新的词典中存在相同的键,那么它们的值将被替换为新的值。 语法 dict1.update(dict2) 示例说明 下面是一个例子,演示如何合并两个词典,并输出合并后的结…

    python-answer 2023年3月25日
    00
  • python re.match函数的具体使用

    下面我将为您详细讲解 Python re.match 函数的具体使用。首先,先来看一下 re.match 函数的语法: re.match(pattern, string, flags=0) 其中,各参数的作用如下: pattern:正则表达式模式,用于匹配输入的字符串; string:要匹配的字符串; flags(可选):正则表达式的匹配标志,通常作为可选参…

    python 2023年6月3日
    00
  • python实现简单的超市商品销售管理系统

    Python实现简单的超市商品销售管理系统 概述 本教程将介绍如何使用Python实现简单的超市商品销售管理系统。此系统具有以下功能: 用户登录:用户可以使用用户名和密码进行登录,并可以选择使用管理员或销售员权限。 仓库管理:管理员可以添加、删除和修改商品信息,包括商品名称、价格、数量和保质期。 商品销售:销售员可以检索商品信息,选择要购买的商品和数量,并生…

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