返回

房价爬取(实例教程)

闲谈





### 前言

大家好,欢迎来到我的技术博客!这系列的博客是我用来记录一些爬虫的小项目实例的,使用的抓包工具是request,数据解析工具是xpath,因为xpath相较于bs4和正则更加常用、便捷高效。下面就简单介绍一下xpath的使用。

### xpath简介

XPath(全称XML Path Language)是一种用于在XML文档中查找节点的语言。它使用一种路径表达式来指定要查找的节点。XPath表达式由以下部分组成:

* 节点名称:要查找的节点的名称。
* 轴:用于指定要查找的节点与当前节点之间的关系。
* 谓词:用于对要查找的节点进行过滤。

### xpath语法

XPath表达式的语法如下:

/:根节点
//:所有节点
*:当前节点的所有子节点
@:属性
[]:谓词


### xpath示例

以下是一些xpath表达式的示例:

* `//title`:查找所有`<title>`元素。
* `//p[@class="intro"]`:查找所有具有`class="intro"`属性的`<p>`元素。
* `//div[contains(@id, "main")]`:查找所有包含`id`属性值为`"main"``<div>`元素。

### xpath在爬虫中的应用

XPath在爬虫中可以用于以下方面:

* 从HTML或XML文档中提取数据。
* 在网页中导航。
* 构造HTTP请求。
* 解析JSON和XML数据。

### 实例教程:房价爬取

#### 环境搭建

首先,我们需要安装Python和必要的库。

pip install requests
pip install lxml


#### 数据源选择

房价数据的来源有很多,我们可以从政府网站、房地产网站、中介网站等地方获取数据。为了便于演示,我选择了一个免费的房地产网站:链家网。

#### xpath解析

接下来,我们需要使用xpath来解析链家网的HTML代码,提取出房价数据。

```python
import requests
from lxml import etree

# 发送HTTP请求
url = 'https://bj.lianjia.com/ershoufang/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
}
response = requests.get(url, headers=headers)

# 解析HTML代码
html = response.text
tree = etree.HTML(html)

# 使用xpath提取数据
titles = tree.xpath('//div[@class="title"]/a/text()')
prices = tree.xpath('//div[@class="totalPrice"]/span/text()')

数据存储

最后,我们将提取到的数据存储到本地文件中。

with open('house_prices.csv', 'w') as f:
    f.write('title,price\n')
    for title, price in zip(titles, prices):
        f.write(f'{title},{price}\n')

总结

本教程介绍了如何使用Python和xpath进行房价爬取。通过这个实例,我们可以了解到xpath在爬虫中的应用,以及如何使用它来提取数据。