爬虫的bs4、xpath、requests、selenium、scrapy的基本用法

2024-08-21 15:20

本文主要是介绍爬虫的bs4、xpath、requests、selenium、scrapy的基本用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在 Python 中,BeautifulSoup(简称 bs4)、XPathRequestsSeleniumScrapy 是五种常用于网页抓取和解析的工具。

1. BeautifulSoup (bs4)

BeautifulSoup 是一个简单易用的 HTML 和 XML 解析库,常用于从网页中提取数据。
它的优点是易于学习和使用,适合处理静态页面的解析。

安装 BeautifulSoup
pip install beautifulsoup4
示例:解析 HTML 并提取数据
from bs4 import BeautifulSouphtml_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a>
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>
<p class="story">...</p>
</body></html>
"""soup = BeautifulSoup(html_doc, 'html.parser')# 提取标题
print(soup.title.string)  # 输出: The Dormouse's story# 提取所有链接
for link in soup.find_all('a'):print(link.get('href'))

2. XPath

XPath 是一种用于从 XML 文档中选择节点的语言,它在解析和提取 HTML 内容时非常强大。
lxmlScrapy 等库支持使用 XPath。

示例:使用 lxml 和 XPath 提取数据
from lxml import etreehtml = """
<html><body>
<div><p class="title">Title 1</p><p class="content">Content 1</p>
</div>
<div><p class="title">Title 2</p><p class="content">Content 2</p>
</div>
</body></html>
"""tree = etree.HTML(html)# 提取所有标题
titles = tree.xpath('//p[@class="title"]/text()')
print(titles)  # 输出: ['Title 1', 'Title 2']

3. Requests

Requests 是一个用于发送 HTTP 请求的简单而强大的库,适合抓取静态网页内容。
它常与 BeautifulSouplxml 配合使用。

安装 Requests
pip install requests
示例:发送 HTTP 请求并获取网页内容
import requestsurl = 'http://example.com'
response = requests.get(url)if response.status_code == 200:print(response.text)  # 输出网页的 HTML 内容

4. Selenium

Selenium 是一个自动化工具,常用于需要浏览器交互或处理动态网页的抓取任务。
它可以模拟用户操作,如点击、输入、滚动等。

安装 Selenium 和浏览器驱动
pip install selenium

下载并配置浏览器驱动,如 chromedriver(Chrome)或 geckodriver(Firefox)。

示例:使用 Selenium 自动化浏览器操作
from selenium import webdriver
from selenium.webdriver.common.by import By# 启动 Chrome 浏览器
driver = webdriver.Chrome()# 打开网页
driver.get('http://example.com')# 查找元素并提取内容
element = driver.find_element(By.TAG_NAME, 'h1')
print(element.text)  # 输出页面上的第一个 <h1> 标签的文本# 关闭浏览器
driver.quit()

5. Scrapy

Scrapy 是一个功能强大的爬虫框架,适合大规模数据抓取。
它支持异步请求、数据处理管道、自动化抓取等功能,非常适合复杂的抓取任务。

安装 Scrapy
pip install scrapy
示例:创建并运行 Scrapy 爬虫
# 创建 Scrapy 项目
scrapy startproject myproject# 定义一个爬虫
import scrapyclass ExampleSpider(scrapy.Spider):name = 'example'start_urls = ['http://example.com']def parse(self, response):for title in response.xpath('//h1/text()').getall():yield {'title': title}# 运行爬虫
# 在命令行中执行: scrapy crawl example

工具选择指南

  • BeautifulSoup (bs4):适合解析静态 HTML,特别是简单的网页抓取任务。
  • XPath:强大的选择语言,用于复杂的 HTML/XML 解析,适合与 lxmlScrapy 一起使用。
  • Requests:用于发送 HTTP 请求,适合抓取静态网页内容。
  • Selenium:适合处理动态网页和需要模拟用户操作的场景。
  • Scrapy:适合大规模、复杂的网页抓取任务,支持异步处理和数据管道。

这篇关于爬虫的bs4、xpath、requests、selenium、scrapy的基本用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1093531

相关文章

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

SpringBoot UserAgentUtils获取用户浏览器的用法

《SpringBootUserAgentUtils获取用户浏览器的用法》UserAgentUtils是于处理用户代理(User-Agent)字符串的工具类,一般用于解析和处理浏览器、操作系统以及设备... 目录介绍效果图依赖封装客户端工具封装IP工具实体类获取设备信息入库介绍UserAgentUtils

Java中的@SneakyThrows注解用法详解

《Java中的@SneakyThrows注解用法详解》:本文主要介绍Java中的@SneakyThrows注解用法的相关资料,Lombok的@SneakyThrows注解简化了Java方法中的异常... 目录前言一、@SneakyThrows 简介1.1 什么是 Lombok?二、@SneakyThrows

Python中的getopt模块用法小结

《Python中的getopt模块用法小结》getopt.getopt()函数是Python中用于解析命令行参数的标准库函数,该函数可以从命令行中提取选项和参数,并对它们进行处理,本文详细介绍了Pyt... 目录getopt模块介绍getopt.getopt函数的介绍getopt模块的常用用法getopt模

mysql中的group by高级用法

《mysql中的groupby高级用法》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,下面给大家介绍mysql中的groupby用法... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

Java中Scanner的用法示例小结

《Java中Scanner的用法示例小结》有时候我们在编写代码的时候可能会使用输入和输出,那Java也有自己的输入和输出,今天我们来探究一下,对JavaScanner用法相关知识感兴趣的朋友一起看看吧... 目录前言一 输出二 输入Scanner的使用多组输入三 综合练习:猜数字游戏猜数字前言有时候我们在

java解析jwt中的payload的用法

《java解析jwt中的payload的用法》:本文主要介绍java解析jwt中的payload的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解析jwt中的payload1. 使用 jjwt 库步骤 1:添加依赖步骤 2:解析 JWT2. 使用 N

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

SQL BETWEEN 的常见用法小结

《SQLBETWEEN的常见用法小结》BETWEEN操作符是SQL中非常有用的工具,它允许你快速选取某个范围内的值,本文给大家介绍SQLBETWEEN的常见用法,感兴趣的朋友一起看看吧... 在SQL中,BETWEEN是一个操作符,用于选取介于两个值之间的数据。它包含这两个边界值。BETWEEN操作符常用