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

yizhihongxing

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 如何用terminal输入参数

    当我们在终端中运行 Python 程序时,有时需要在命令行中传递参数以便程序能够获取到输入。在 Python 中,可以使用 sys 模块中的 argv 属性来获取这些传递的参数。下面是使用 Terminal 输入参数的步骤: 1. 编写 Python 程序 首先,我们需要编写 Python 程序并定义需要获取的参数。假设我们有一个程序 example.py,…

    python 2023年6月3日
    00
  • 用Python selenium实现淘宝抢单机器人

    用Python selenium实现淘宝抢单机器人 1. 简介 淘宝抢单机器人是用Python selenium实现了自动抢购淘宝商品的程序。本攻略旨在帮助初学者了解如何利用Python和selenium库编写一个简单的抢单机器人。 2. 前提条件 安装Python和selenium库。 下载和安装Chrome浏览器。 下载和安装Chrome浏览器驱动程序。…

    python 2023年5月23日
    00
  • python 爬虫网页登陆的简单实现

    下面是关于“python 爬虫网页登陆的简单实现”的完整攻略: 1. 背景介绍 爬虫一般需要模拟登陆才能爬取需要登录后才能获取的信息,例如淘宝、京东等电商类网站。Python作为一门较为流行的语言之一,它提供了许多优秀的库和模块用于爬虫操作,其中最为著名的是requests模块。本文将以requests模块为例,介绍如何利用Python实现网页登陆。 2. …

    python 2023年5月14日
    00
  • python将unicode转为str的方法

    将Unicode转为str的方法有以下两种: 1. 使用编码方式 在Python内部,str类型默认使用的是UTF-8编码,而unicode类型没有编码方式,需要使用相应的编码方式将其转换为str。可以使用encode()方法将Unicode转为指定编码的str,示例如下: # -*- coding: utf-8 -*- s = u’你好,世界’ # 假设s…

    python 2023年5月20日
    00
  • Python 基础教程之包和类的用法

    Python 基础教程之包和类的用法 什么是包? 在 Python 中,包是一种组织 Python 模块的方式。通过包,可以将一个模块文件夹下的多个 Python 模块组织为一个大的 Python 应用,方便管理与维护。一个包中必须包含一个 __init__.py 文件,该文件通常是空文件,但也可以包含一些初始化代码。 一个包可以非常复杂,可以包含子包、子模…

    python 2023年5月20日
    00
  • python 浅谈serial与stm32通信的编码问题

    让我们来详细讲解“Python 浅谈 Serial 与 STM32 通信的编码问题”的完整攻略。 什么是 Serial 通信? Serial 通信指的是串行口通信,也称为串行通信或UART通信,是一种通过串行口进行数据传输的通讯方式。在STM32开发中,它通常用于与电脑或其他设备进行数据传输。 Python 中 Serial 模块的使用 serial.Ser…

    python 2023年5月20日
    00
  • Python全栈之面向对象基础

    Python全栈之面向对象基础 Python作为一门高级语言,自然离不开面向对象编程的支持。本篇文章将为大家介绍Python面向对象编程的基础概念和应用,包括类、对象、继承、多态等内容。 面向对象基础概念 类和对象 类是抽象的概念,它定义了一类对象的共同属性和方法。而对象则是具体的实例化后的个体,每个对象都拥有其独特的属性和方法。比如我们可以用一个“Pers…

    python 2023年5月13日
    00
  • 利用Python和OpenCV库将URL转换为OpenCV格式的方法

    首先,将URL转换为OpenCV格式需要经历以下过程: 使用Python的requests库从URL获取数据; 将获取到的数据进行解码; 将解码得到的数据转换为OpenCV格式。 下面是具体的步骤和示例说明: 步骤一:使用Python的requests库从URL获取数据 在Python中,可以通过requests库来发送HTTP请求,从而获取到URL对应资源…

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