python爬虫指南之xpath实例解析(附实战)

XPath是一种用于在XML和HTML文档中定位元素的语言。在Python爬虫中,XPath是一种非常常用的定位元素的方式。以下是Python爬虫指南之XPath实例解析的完整攻略,包含两个示例。

步骤1:安装必要的库

在使用XPath之前,我们需要先安装必要的库。以下是需要安装的库:

  • requests:用于发送HTTP请求和获取响应。
  • lxml:用于解析XML和HTML文档。

可以使用pip命令来安装这些库:

pip install requests lxml```

## 步骤2:使用XPath定位元素

在安装必要的库之后,我们可以使用XPath定位元素。以下是一个简单的示例,可以使用XPath定位百度首页的搜索框:

```python
import requests
from lxml import etree

url = 'https://www.baidu.com'
response = requests.get(url)
html = etree.HTML(response.text)
search_input = html.xpath('//input[@id="kw"]')[0]
print(search_input)

在上面的示例中,我们使用requests库发送HTTP请求,使用lxml库解析HTML文档,并使用XPath定位百度首页的搜索框。

步骤3:使用XPath提取数据

在定位元素之后,我们可以使用XPath提取数据。以下是一个示例,可以使用XPath提取豆瓣电影Top250的电影名称和评分:

import requests
from lxml import etree

url = 'https://movie.douban.com/top250'
movies = []

for i in range(0, 250, 25):
    params = {'start': str(i), 'filter': ''}
    response = requests.get(url, params=params)
    html = etree.HTML(response.text)
    items = html.xpath('//div[@class="item"]')
    for item in items:
        title = item.xpath('.//span[@class="title"]/text()')[0]
        rating_num = item.xpath('.//span[@class="rating_num"]/text()')[0]
        movies.append({'title': title, 'rating_num': rating_num})

print(movies)

在上面的示例中,我们使用requests库发送HTTP请求,使用lxml库解析HTML文档,并使用XPath提取豆瓣电影Top250的电影名称和评分。

示例1:使用XPath爬取天气数据

以下是一个示例,可以使用XPath爬取某城市未来7天的天气数据:

import requests
from lxml import etree

url = 'https://tianqi.moji.com/weather/china/shanghai/pudong-new-district'
weather = []

response = requests.get(url)
html = etree.HTML(response.text)
items = html.xpath('//div[@class="wea_info"]')
for item in items:
    date = item.xpath('.//em/text()')[0]
    weather_text = item.xpath('.//b/text()')[0]
    temperature = item.xpath('.//span/text()')[0]
    weather.append({'date': date, 'weather_text': weather_text, 'temperature': temperature})

print(weather)

在上面的示例中,我们使用requests库发送HTTP请求,使用lxml库解析HTML文档,并使用XPath提取某城市未来7天的天气数据。

示例2:使用XPath爬取股票数据

以下是一个示例,可以使用XPath爬取某股票最近30天的股票数据:

import requests
from lxml import etree

url = 'https://finance.sina.com.cn/realstock/company/sh600519/nc.shtml'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
stock = []

response = requests.get(url, headers=headers)
html = etree.HTML(response.text)
items = html.xpath('//tr[@class="tr_2"]')
for item in items:
    date = item.xpath('.//td[1]/text()')[0]
    open_price = item.xpath('.//td[2]/text()')[0]
    high_price = item.xpath('.//td[3]/text()')[0]
    low_price = item.xpath('.//td[4]/text()')[0]
    close_price = item.xpath('.//td[5]/text()')[0]
    stock.append({'date': date, 'open_price': open_price, 'high_price': high_price, 'low_price': low_price, 'close_price': close_price})

print(stock)

在上面的示例中,我们使用requests库发送HTTP请求,使用lxml库解析HTML文档,并使用XPath提取某股票最近30天的股票数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python爬虫指南之xpath实例解析(附实战) - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • 总结python 三种常见的内存泄漏场景

    下面是总结Python三种常见的内存泄漏场景的完整攻略。 1. 引用循环 引用循环是Python内存泄漏最常见的情况之一,也被称为“循环引用”。 基本原理是当存在两个对象,这两个对象在彼此之间存在引用关系,即相互引用,形成了一个环状结构,但是这个环状结构又没有被引用指向,这时就会发生引用循环,导致内存泄漏。 示例代码: class Person: def _…

    python 2023年6月3日
    00
  • python 使用get_argument获取url query参数

    获取 URL 查询参数在 Web 开发中非常常见。在 Python 中,可以使用 Tornado 框架的 RequestHandler 类来实现获取 URL 查询参数的功能。 以下是具体步骤: 步骤: 首先,需要在代码中导入 tornado.web 包: import tornado.web 创建一个继承自 tornado.web.RequestHandle…

    python 2023年5月31日
    00
  • Python中用Decorator来简化元编程的教程

    让我来详细讲解一下“Python中用Decorator来简化元编程的教程”。 什么是元编程 元编程是指在程序运行的时候对程序自身进行操作或者修改。Python 中的元编程可以通过修改类和函数的定义,或者运行时修改对象等方法来实现。 Python中的Decorator Python中的装饰器(Decorator)是一种特殊的函数,可以用来修改其他函数的功能。装…

    python 2023年5月30日
    00
  • python读取中文路径时出错(2种解决方案)

    在Python编程中,有时候我们会遇到读取中文路径时出错的问题。这通常是由于编码问题引起的。本攻略将提供解决问题的两种方法,并提供两个示例。 解决方法 以下是解决读取中文路径时出错的两种方法: os.path.abspath方法 使用os.path.join方法 使用os.path.abspath方法 我们可以使用os.path.abspath方法来解决读取…

    python 2023年5月13日
    00
  • python爬取本站电子书信息并入库的实现代码

    本攻略将介绍如何使用Python爬取本站电子书信息并将其存储到数据库中。我们将使用requests库和BeautifulSoup库爬取网页数据,并使用sqlite3库将数据存储到SQLite数据库中。 爬取数据 我们可以使用Python的requests库和BeautifulSoup库爬取本站电子书信息。以下是一个示例代码,用于爬取电子书信息: import…

    python 2023年5月15日
    00
  • python 日志 logging模块详细解析

    Python日志logging模块详细解析 Python中的logging模块是一个非常强大的日志记录工具,它可以帮助我们记录应用程序的运行状态和错误信息,从而方便我们进行调试和排错。本文将详细绍Python中logging模块的使用方法和示例说明。 logging模块的基本使用 logging模块是Python中一个标准库,我们可以直使用它来记录日志信息。…

    python 2023年5月14日
    00
  • Python random模块的使用示例

    Python random模块的使用示例 Python中的random模块用于生成随机数,包括整数、浮点数和随机序列。接下来介绍random模块的常见使用示例。 1. 生成随机整数 要生成指定范围内的随机整数,可以使用random.randint()函数。该函数接受两个参数,分别代表随机整数的范围。下面的代码示例生成一个1~100之间的随机整数: impor…

    python 2023年6月3日
    00
  • Python OpenCV读取png图像转成jpg图像存储的方法

    我来为您详细讲解Python OpenCV读取png图像转成jpg图像存储的方法。 步骤 1. 导入OpenCV库 要使用OpenCV库来读取和存储图像,首先需要将库导入到Python代码中。代码如下: import cv2 2. 读取png图像 使用OpenCV库读取图片的函数是cv2.imread。其中,第一个参数是图片的文件名,第二个参数是读取图片的方…

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