首页 > 编程语言 >Python网络爬虫详解:实战豆瓣电影信息采集

Python网络爬虫详解:实战豆瓣电影信息采集

时间:2024-07-24 23:25:04浏览次数:14  
标签:示例 Python title 爬虫 BeautifulSoup 豆瓣 import requests

文章目录


前言

随着互联网的迅猛发展和数据分析需求的不断增加,网络爬虫成为了一项重要的技术。通过网络爬虫,用户可以自动化地从互联网获取大量数据,从而实现各种数据分析、市场调查等目标。本文将介绍什么是爬虫,以及在爬虫开发中经常用到的一些Python库和其作用,并展示一个简单的爬虫实现步骤。

在这里插入图片描述


一、爬虫是什么?

网络爬虫,又称网页蜘蛛、网络机器人,是一种按照一定规则自动抓取互联网信息的程序。它通过模拟浏览器的行为发送HTTP请求,获取网页内容,然后对获取到的HTML进行解析,从中提取出需要的数据。爬虫广泛应用于搜索引擎、数据分析、市场调查等领域,帮助人们从海量的互联网信息中提取有用的数据。

爬虫的工作流程:

  1. 发送请求:爬虫通过HTTP请求获取目标网页的HTML内容。这通常使用requests库来完成。
  2. 解析内容:获取到HTML内容后,爬虫使用BeautifulSoup等库来解析网页,提取所需的数据。
  3. 数据处理:对提取的数据进行处理和清洗,使其结构化和规范化。
  4. 数据存储:将处理后的数据存储到本地文件或数据库中,以便后续分析和使用。

二、常用库及其作用

在进行网络爬虫开发时,Python提供了许多功能强大的库,帮助开发者轻松获取、解析和存储数据。以下是一些常用的库及其作用:

1.Requests

  • 作用:用于发送HTTP请求,获取网页内容。Requests库简化了HTTP请求的操作,使得爬虫可以方便地获取网页数据。
  • 示例:
import requests
response = requests.get('https://www.douban.com/')
print(response.text)

2.BeautifulSoup

  • 作用:用于解析HTML和XML文档,从中提取所需的数据。BeautifulSoup提供了简洁的API,便于搜索、遍历和修改解析树。
  • 示例:
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
print(soup.title)

3. lxml

  • 作用:一个高效的XML和HTML解析库,支持XPath和XSLT。lxml比BeautifulSoup更快,更适合处理大型文档。
  • 示例:
from lxml import etree
tree = etree.HTML(response.text)
title = tree.xpath('//title/text()')
print(title)

4. Scrapy

  • 作用:一个强大的爬虫框架,提供了丰富的功能,包括页面抓取、数据提取、存储和爬虫管理。Scrapy适用于需要抓取大量网页和处理复杂逻辑的项目。
  • 示例:
import scrapy
class MySpider(scrapy.Spider):
    name = 'my_spider'
    start_urls = ['https://www.douban.com/']
    def parse(self, response):
        title = response.xpath('//title/text()').get()
        print(title)

5. Selenium

  • 作用:一个自动化测试工具,可以控制浏览器进行各种操作,适用于需要处理动态加载内容的网页。Selenium可以模拟用户操作,如点击、输入等。
  • 示例:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.douban.com/')
print(driver.title)
driver.quit()

6. PyQuery

  • 作用:一个类似jQuery的解析库,可以使用jQuery语法选择和操作HTML元素。PyQuery非常直观,适合习惯jQuery语法的开发者。
  • 示例:
from pyquery import PyQuery as pq
doc = pq(response.text)
title = doc('title').text()
print(title)

7. Pandas

  • 作用:一个数据处理和分析库,适合用来处理结构化数据。Pandas可以方便地将数据存储到CSV、Excel等格式,适合后续的数据分析和处理。
  • 示例:
import pandas as pd
data = [{'name': 'Inception', 'year': 2010}, {'name': 'Interstellar', 'year': 2014}]
df = pd.DataFrame(data)
df.to_csv('movies.csv', index=False)

8. JSON

  • 作用:用于处理JSON数据格式,可以将Python对象转换为JSON格式,或将JSON字符串解析为Python对象。
  • 示例:
import json
data = {'name': 'Inception', 'year': 2010}
json_data = json.dumps(data)
print(json_data)

9. Time

  • 作用:用于处理时间相关的操作。在爬虫中常用于引入随机延迟,模拟人类行为,避免被目标网站屏蔽。
  • 示例:
import time
import random
time.sleep(random.randint(1, 3))

通过这些库的配合使用,可以方便地实现各种爬虫功能,自动化地从互联网获取所需的信息,并对数据进行处理和存储。


三、实现步骤

步骤一:环境准备

下载requests库和beautifulsoup4库,requests库的本质就是封装了urllib3模块,它可以模拟浏览器的请求,编写过程更接近正常URL的访问过程。一般通过导入BeautifulSoup类来解析网页内容,以下是下载依赖的命令:

pip install requests beautifulsoup4

步骤二:数据采集

导入 requests 库:import requests,设置目标URL和请求头信息。设置UA进行简单伪装,将目标URL和请求头信息传入到requests库中的get()方法,使用 requests.get() 方法发送请求,获取豆瓣电影排行榜的HTML内容
在这里插入图片描述

步骤三:数据处理

导入 BeautifulSoup 库,解析获取的HTML内容:from bs4 import BeautifulSoup,创建BeautifulSoup对象,初始化一个空列表 movies 来存储电影信息。
在这里插入图片描述
遍历所有包含电影信息的 div 标签(类名为 pl2),提取电影名称、上映时间和主演信息。

通过方法选择器获取所有类名为pl2的div标签,再从中找到a标签第一个返回的结果,获取到电影名称,再找到里面类名为pl的第一个p标签的信息,获取到该信息里的第一个内容为上映时间,第三个内容之后的则为主演信息,使用字符串操作对提取的数据进行处理,并存储到字典中。将每部电影的信息添加到 movies 列表中。
引入 time 模块添加1到3秒的随机延迟,模拟人类行为。

在这里插入图片描述

步骤四:数据存储

导入 json 库:import json,将提取的信息存储在字典中,并将字典转换为JSON格式文件保存到本地。
在这里插入图片描述

最后我们运行该爬虫文件,可以看到数据已保存至本地文件 movies.json
在这里插入图片描述

总结

通过本篇博客,我们学习了如何使用Python进行网络爬虫。首先,我们介绍了爬虫的基本概念和工作流程,然后详细介绍了常用的爬虫库及其作用。通过一个具体的示例演示了从环境准备、数据采集、数据处理到数据存储的全过程。这个案例展示了Python在网络爬虫领域的强大应用和灵活性。希望本文能够帮助读者更好地了解Python在网络爬虫方面的使用,如果有任何疑问或者建议,欢迎留言讨论

标签:示例,Python,title,爬虫,BeautifulSoup,豆瓣,import,requests
From: https://blog.csdn.net/Huahua_1223/article/details/140674875

相关文章

  • python学习之内置函数
    Python拥有许多内置函数,这些函数是Python的一部分,不需要额外导入即可直接使用。这些函数提供了对Python解释器功能的直接访问,涵盖了从数学计算到类型检查、从内存管理到异常处理等各个方面。下面是一些常用的Python内置函数及其简要说明:一、Printprint函数大家都不会......
  • Python中以函数为作用域
    点击查看代码#第一题foriteminrange(10):#不报错,没有函数,所有操作在全局作用域里面执行,item最后赋值为:9,此时item在缩进与全局都可以使用passprint(item)#第二题item=10deffunc():foriteminrange(10):#优先在本地查找,找不到在到全局查找p......
  • 掌握IPython宏:%%macro命令的高效使用指南
    掌握IPython宏:%%macro命令的高效使用指南在编程中,宏是一种允许你定义可重用代码片段的强大工具。IPython,这个增强版的Python交互式环境,提供了一个名为%%macro的魔术命令,允许用户创建宏,从而提高代码的可重用性和效率。本文将详细介绍如何在IPython中使用%%macro命令创建宏,并......
  • 7月24号python:库存管理
    7月24号python:库存管理题目:​ 仓库管理员以数组stock形式记录商品库存表。stock[i]表示商品id,可能存在重复。原库存表按商品id升序排列。现因突发情况需要进行商品紧急调拨,管理员将这批商品id提前依次整理至库存表最后。请你找到并返回库存表中编号的最小的元素以便及......
  • IPython的Bash之舞:%%bash命令全解析
    IPython的Bash之舞:%%bash命令全解析IPython的%%bash魔术命令为JupyterNotebook用户提供了一种在单元格中直接执行Bash脚本的能力。这个特性特别适用于需要在Notebook中运行系统命令或Bash特定功能的场景。本文将详细介绍如何在IPython中使用%%bash命令,并提供实际的代码示......
  • Python数据分析与可视化大作业项目说明(含免费代码)
    题目:对全球和中国互联网用户的数据分析与可视化代码下载链接:https://download.csdn.net/download/s44359487yad/89574688一、项目概述1.1.项目背景:互联网是当今时代最重要和最有影响力的技术之一,它已经深刻地改变了人们的生活、工作、学习等方面。互联网用户数据是反映......
  • IPython的跨界魔术:%%javascript命令深度解析
    IPython的跨界魔术:%%javascript命令深度解析IPython,作为Python编程的强大交互式工具,提供了多种魔术命令来扩展其功能。其中,%%javascript魔术命令允许用户在IPythonNotebook中直接执行JavaScript代码,打通了Python和JavaScript两个世界,为数据可视化、Web内容操作等提供了便......
  • 密码学-RSA基础题解题脚本-Python
    importgmpy2#计算大整数模块importlibnumimportrsafromCrypto.PublicKeyimportRSA#安装时安装pycryptodome模块#已知:p,q,e,cdefknown_p_q_e_c():p=int(input('请输入一个素数p:'))q=int(input('请输入另一个素数q:'))e=int(input('请输入公钥e:'))......
  • python优先级
    在Python中,运算符的优先级决定了在表达式中运算符被计算或评估的顺序。了解这些优先级可以帮助编写更清晰、更准确的代码,尤其是在涉及多个运算符的复杂表达式中。以下是Python中运算符优先级的一般顺序,从高到低排列:1.括号:括号的优先级最高,它们可以用于强制改变运算的优先级。例......
  • 在Python中,你有好多对象?——Python类
    1.面向对象 当谈论面向对象编程(OOP)时,我们指的是一种程序设计的方法,它以对象的概念为中心,而不是以函数或逻辑为中心。面向对象编程的主要特征包括:封装(Encapsulation):将数据(属性)和操作数据的方法(方法或函数)捆绑在一起,以防止对数据的直接访问和修改,从而提高安全性和灵活性。......