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技术站