下面我来详细讲解下“Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】”的完整攻略。
1. 前置条件
在开始实现这个功能之前,需要先安装好Python3,并且安装以下几个必要的Python模块:
- requests
- lxml
- json
其中,requests用来发送HTTP请求,lxml用来解析HTML文档,json用来将爬取到的数据保存为json格式文件。
2. 实现过程
以下是具体的实现过程步骤:
2.1 发送HTTP请求并解析HTML文档
首先,我们需要使用requests发送一个HTTP请求,并且得到返回的HTML文档。具体代码如下:
import requests
from lxml import etree
url = 'https://shanghai.baixing.com/ershouqiugou/?page=1'
response = requests.get(url)
html = response.text
接着,我们需要使用lxml解析这个HTML文档,并且得到需要爬取的数据。具体代码如下:
root = etree.HTML(html)
# 获取所有的li元素
lis = root.xpath('//*[@id="content"]/div[1]/ul/li')
# 遍历每一个li元素,并且得到需要爬取的数据
for li in lis:
title = li.xpath('div[1]/a/text()')[0]
link = li.xpath('div[1]/a/@href')[0]
price = li.xpath('div[2]/text()')[0].strip()
以上代码中,我们通过xpath表达式,获取到了页面中所有的li元素,并且遍历每一个li元素,得到了需要爬取的数据。
2.2 将爬取到的数据保存为字典
接下来,我们需要将爬取到的数据保存为字典。具体代码如下:
data = []
for li in lis:
title = li.xpath('div[1]/a/text()')[0]
link = li.xpath('div[1]/a/@href')[0]
price = li.xpath('div[2]/text()')[0].strip()
item = {}
item['title'] = title
item['link'] = link
item['price'] = price
data.append(item)
以上代码中,我们遍历每一个li元素,将获取到的数据保存为一个字典,并且将字典添加到列表中。
2.3 将爬取到的数据保存为json格式文件
最后,我们需要将爬取到的数据保存为json格式文件。具体代码如下:
import json
with open('data.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
以上代码中,我们使用了json模块中的dump函数,将爬取到的数据保存为了data.json文件。
3. 示例说明
以下是两条示例说明:
3.1 爬取不同页面
我们可以修改上面的代码,更改url的值,实现爬取百姓网不同页面的数据。例如,修改url的值为https://shanghai.baixing.com/ershouqiugou/?page=2,即可爬取第二页的数据。
3.2 爬取不同城市的数据
我们同样可以修改url的值,实现爬取不同城市的二手求购列表。例如,将url修改为https://guangzhou.baixing.com/ershouqiugou/,即可爬取广州市的二手求购列表。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】 - Python技术站