返回
房价爬取(实例教程)
闲谈
2024-02-23 17:50:36
### 前言
大家好,欢迎来到我的技术博客!这系列的博客是我用来记录一些爬虫的小项目实例的,使用的抓包工具是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在爬虫中的应用,以及如何使用它来提取数据。