【Python网络爬虫笔记】8- (BeautifulSoup)抓取电影天堂2024年最新电影,并保存所有电影名称和链接

目录

  • [一. BeautifulSoup的作用](#一. BeautifulSoup的作用)
  • [二. 核心方法介绍](#二. 核心方法介绍)
    • [2.1 构造函数](#2.1 构造函数)
    • [2.2 find()方法](#2.2 find()方法)
    • [2.3 find_all()方法](#2.3 find_all()方法)
    • [2.4 select()方法](#2.4 select()方法)
  • [三. 网络爬虫中使用BeautifulSoup](#三. 网络爬虫中使用BeautifulSoup)
  • 四、案例爬取结果

一. BeautifulSoup的作用

  • 解析HTML/XML文档:它可以将复杂的HTML或XML文本转换为易于操作的树形结构。例如,将一个网页的HTML内容解析后,就可以像在文件系统中遍历文件夹和文件一样,在这个树形结构中查找特定的标签、属性和文本内容。
  • 数据提取:能够方便地从解析后的文档中提取所需的数据。比如,从新闻网站中提取文章标题、内容、发布时间,或者从电商网站提取商品名称、价格、评论等信息。
  • 清理和转换数据:在一定程度上可以对提取的数据进行清理和转换。例如,去除HTML标签只保留纯文本内容,或者修改标签的属性等。

二. 核心方法介绍

2.1 构造函数

 - **语法**:`BeautifulSoup(html_doc, 'parser')`
 - **作用**:创建一个BeautifulSoup对象,其中`html_doc`是要解析的HTML或XML文档(可以是字符串形式的网页内容),`parser`是解析器类型,常用的有`html.parser`(Python内置解析器)、`lxml`(需要安装`lxml`库,解析速度快且功能强大)和`html5lib`(对HTML5的支持较好)。例如:
 ```python
 from bs4 import BeautifulSoup
 import requests
 url = "https://www.example.com"
 response = requests.get(url)
 soup = BeautifulSoup(response.text, 'html.parser')
 ```

2.2 find()方法

 - **语法**:`find(name, attrs, recursive, string, **kwargs)`
 - **作用**:在解析后的文档树中查找并返回第一个符合条件的标签。
 - **参数说明**:
   - `name`:标签名称,如`'div'`、`'a'`等。例如,`soup.find('div')`会返回文档中第一个`<div>`标签。
   - `attrs`:一个字典,用于指定标签的属性。例如,`soup.find('a', attrs={'class': 'link'})`会返回第一个`class`属性为`link`的`<a>`标签。
   - `recursive`:一个布尔值,默认为`True`,表示是否在整个文档树中递归查找。如果设为`False`,则只在文档树的直接子元素中查找。
   - `string`:用于匹配标签中的文本内容。例如,`soup.find('p', string='This is a paragraph')`会返回包含文本`This is a paragraph`的第一个`<p>`标签。

2.3 find_all()方法

 - **语法**:`find_all(name, attrs, recursive, string, limit, **kwargs)`
 - **作用**:返回文档树中所有符合条件的标签列表。
 - **参数说明**:参数含义与`find`方法类似,多了一个`limit`参数,用于限制返回结果的数量。例如,`soup.find_all('a', limit = 3)`会返回文档中前3个`<a>`标签。

2.4 select()方法

 - **语法**:`select(selector)`
 - **作用**:使用CSS选择器语法在文档树中查找元素。这是一种非常强大的查找方式,能够方便地定位到复杂结构中的元素。例如,`soup.select('div.class a')`会返回所有在`class`属性的父`<div>`标签下的`<a>`标签。

三. 网络爬虫中使用BeautifulSoup

  • 案例:抓取电影天堂2024年最新电影,并保存所有电影名称和链接
    • 电影网址https://dytt89.com/

    • 需要抓取的内容

    • 功能实现

      -1.安装BeautifulSoup库

      使用pip命令安装beautifulsoup4库。在命令行中输入pip install beautifulsoup4

      -2.导入模块

      在Python代码中,需要从bs4包中导入BeautifulSoup类。同时,如果是从网页获取数据,通常还需要导入requests库来发送HTTP请求。

      -3.代码实现

python 复制代码
# 抓取2024年最新电影链接,并保存所有电影信息和链接

# 导入requests
import requests

# 导入 BeautifulSoup
from bs4 import BeautifulSoup
# 导入re
import re

# 头部
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'
}

# 获取网页内容
url = 'https://dytt89.com/'

res = requests.get(url, headers=headers, verify=False)
# 指定字符集
res.encoding = 'gb2312'

# 获取网页内容
html_text = res.text

# 创建BeautifulSoup对象
soup = BeautifulSoup(html_text, 'html.parser')

# 找到2024新片精品的板块
new_movies_section = soup.find('div', class_='co_area2').find(
    'div', class_='title_all').find('a', href=True, text='2024新片精品')


if new_movies_section:
    movie_list = new_movies_section.find_next(
        'div', class_='co_content222').find_all('li')

    for movie in movie_list:
        movie_name = movie.find('a').text
        movie_link = url+movie.find('a')['href'].strip("/")
        print(f"电影名称: {movie_name}")
        print(f"电影链接: {movie_link}")

# 关闭响应
res.close()

四、案例爬取结果

注意:原电影链接如下,此处做了一个拼接。

相关推荐
小陈phd14 分钟前
深度学习之超分辨率算法——SRCNN
python·深度学习·tensorflow·卷积
CodeClimb15 分钟前
【华为OD-E卷-简单的自动曝光 100分(python、java、c++、js、c)】
java·python·华为od
数据小小爬虫26 分钟前
如何利用Python爬虫获取商品历史价格信息
开发语言·爬虫·python
NiNg_1_23434 分钟前
Python的sklearn中的RandomForestRegressor使用详解
开发语言·python·sklearn
黑色叉腰丶大魔王38 分钟前
《基于 Python 的网页爬虫详细教程》
开发语言·爬虫·python
laity171 小时前
爬取小说案例-BeautifulSoup教学篇
爬虫·python
WANGWUSAN661 小时前
Python高频写法总结!
java·linux·开发语言·数据库·经验分享·python·编程
西洼工作室1 小时前
【java 正则表达式 笔记】
java·笔记·正则表达式
40岁的系统架构师1 小时前
1 JVM JDK JRE之间的区别以及使用字节码的好处
java·jvm·python
初学者7.2 小时前
Webpack学习笔记(2)
笔记·学习·webpack