python3制作捧腹网段子页爬虫

yizhihongxing

下面是关于“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内置函数的详细使用方法。Python内置函数是Python语言中自带的功能强大的函数,可以帮助我们快速实现对数据的处理和操作。本文将总结Python内置函数的常见用法和示例代码,供读者参考。 Python内置函数 Python内置函数包含了众多常用的函数和方法。这些函数和方法可以让我们轻松地实现对数据的操…

    python 2023年6月5日
    00
  • 对Python3中dict.keys()转换成list类型的方法详解

    以下是“对Python3中dict.keys()转换成list类型的方法详解”的完整攻略。 1. dict.keys()方法的概述 在Python3中,字典(dict)是一种常见数据,它由一系列键值对(key-value)组成。字典中的键(key)是唯一的,而值(value)可以重复。dict.keys方法可以返回字典中所有的键(key),并将其转换成一个列…

    python 2023年5月13日
    00
  • python 存储json数据的操作

    下面是关于Python存储JSON数据的攻略: 1. 什么是 JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,可以描述复杂的数据结构,比如数组、对象等。JSON数据格式与JavaScript中的对象和数组字面量非常类似,因此很容易被JavaScript解析。 JSON格式由键值对组成,使用大括号 {} …

    python 2023年6月3日
    00
  • python函数形参用法实例分析

    Python函数形参用法实例分析 函数是Python中非常重要的概念,而函数的形参是指在函数定义时的参数,其在函数内部用于接收函数的传参,本篇文章将通过实例分析,详细介绍Python函数形参各种用法。 位置参数形参 位置参数形参是定义函数时最基本的参数方式,其指的是根据参数位置确定传参的方式。 示例1:计算两个数的和 def sum(a, b): retur…

    python 2023年6月5日
    00
  • 如何利用Python和matplotlib更改纵横坐标刻度颜色

    我会详细讲解如何利用Python和matplotlib更改纵横坐标刻度颜色。 准备工作 在开始说明如何更改坐标刻度颜色前,我们需要准备一些工作: 安装Python和Matplotlib:在开始之前需要确保你已经成功安装了Python和matplotlib。如果没有安装,可以前往Python官网和Matplotlib官网进行下载和安装。 导入matplotli…

    python 2023年5月18日
    00
  • python安装pil库方法及代码

    这里是关于Python安装PIL库的详细攻略。 1. PIL库简介 PIL(Python Imaging Library)是Python图片处理领域中比较优秀的一个类库,提供了丰富的图片处理模块,可以方便地进行图片操作和处理,适合于图像处理、图像转换、格式转换等领域。但是,需要注意的是, PIL库版本较老,目前已经不再维护,因此推荐使用Pillow库进行替代…

    python 2023年5月14日
    00
  • python如何实现word批量转HTML

    Python提供了多种库和工具,可以用于将Word文档批量转换为HTML格式。其中,使用python-docx库可以轻松地读取和处理Word文档,使用lxml库可以将Word文档转换为HTML格式。以下是详细讲解Python如何实现Word批量转HTML的攻略,包含两个例。 示例1:使用python-docx和lxml库将单个Word文档转换为HTML 以下…

    python 2023年5月15日
    00
  • Python引用类型和值类型的区别与使用解析

    在Python中,变量可以存储不同类型的数据,这些数据可以是值类型或引用类型。值类型是指变量直接存储数据的值,而引用类型是指变量存储的是数据的内存地址。在本文中,我们将详细讲解Python引用类型和值类型的区别与使用。 值类型 Python中的值类型包括整数、浮点数、布尔值、字符串等。这些类型的变量存储的是数据的值,而不是数据的内存地址。当我们将一个值类型的…

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