爬虫的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

相关文章

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

bytes.split的用法和注意事项

当然,我很乐意详细介绍 bytes.Split 的用法和注意事项。这个函数是 Go 标准库中 bytes 包的一个重要组成部分,用于分割字节切片。 基本用法 bytes.Split 的函数签名如下: func Split(s, sep []byte) [][]byte s 是要分割的字节切片sep 是用作分隔符的字节切片返回值是一个二维字节切片,包含分割后的结果 基本使用示例: pa

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

C 语言的基本数据类型

C 语言的基本数据类型 注:本文面向 C 语言初学者,如果你是熟手,那就不用看了。 有人问我,char、short、int、long、float、double 等这些关键字到底是什么意思,如果说他们是数据类型的话,那么为啥有这么多数据类型呢? 如果写了一句: int a; 那么执行的时候在内存中会有什么变化呢? 橡皮泥大家都玩过吧,一般你买橡皮泥的时候,店家会赠送一些模板。 上

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

Java 多线程的基本方式

Java 多线程的基本方式 基础实现两种方式: 通过实现Callable 接口方式(可得到返回值):

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

UVM:callback机制的意义和用法

1. 作用         Callback机制在UVM验证平台,最大用处就是为了提高验证平台的可重用性。在不创建复杂的OOP层次结构前提下,针对组件中的某些行为,在其之前后之后,内置一些函数,增加或者修改UVM组件的操作,增加新的功能,从而实现一个环境多个用例。此外还可以通过Callback机制构建异常的测试用例。 2. 使用步骤         (1)在UVM组件中内嵌callback函

Java基础回顾系列-第一天-基本语法

基本语法 Java基础回顾系列-第一天-基本语法基础常识人机交互方式常用的DOS命令什么是计算机语言(编程语言) Java语言简介Java程序运行机制Java虚拟机(Java Virtual Machine)垃圾收集机制(Garbage Collection) Java语言的特点面向对象健壮性跨平台性 编写第一个Java程序什么是JDK, JRE下载及安装 JDK配置环境变量 pathHe