这段代码用于从网页上抓取数据,并将数据保存到文本文件中。主要步骤如下:
- 发送HTTP请求获取网页内容:
- 使用
requests.get
方法发送GET请求,获取指定网页的HTML内容。
- 使用XPath解析HTML内容:
- 使用lxml库的
etree.HTML
方法将HTML文本解析成HTML树。 - 使用XPath表达式定位网页中的数据。
- 遍历HTML元素获取数据:
- 使用XPath表达式选中需要抓取的数据元素。
- 遍历每个元素,提取城市、辐射值和检测时间等数据。
- 将提取的数据构建成字典,并将字典添加到名为
datas
的列表中。
- 写入数据到文本文件:
- 打开一个文本文件以写入模式,文件名格式为
data_日期.txt
。 - 遍历
datas
列表,将每个数据字典的内容格式化为字符串,并写入文本文件。 - 使用
datetime.datetime.now().strftime("%Y%m%d")
获取当前日期作为文件名的一部分。
总体来说,这段代码通过HTTP请求和XPath解析,从指定网页上抓取了数据,然后将数据保存到文本文件中,文件名包括日期信息。
import datetime
import time
import requests
from lxml import etree
response = requests.get('https://data.rmtc.org.cn/gis/listtype0M.html')
html_parse = etree.HTML(response.text)
lis = html_parse.xpath('//*[@class="datali"]')
datas = []
for li in lis:
hr_url = li.xpath('.//div[@class="divname"]/a/@href')[0]
hr_name = (li.xpath('.//div[@class="divname"]/a/text()')[0].replace('\r', '')
.replace('\n', '')
.replace('\t', '').strip())
city = hr_name.split('(')[0]
time.sleep(0.2)
response = requests.get(f'https://data.rmtc.org.cn/gis/{hr_url}')
html_children_parse = etree.HTML(response.text)
children_lis = html_children_parse.xpath('//*[@class="datali"]')
for cl in children_lis:
hr_children_name = (cl.xpath('.//div[@class="divname"]/text()')[0].replace('\r', '')
.replace('\n', '')
.replace('\t', '').strip())
hr_children_val = cl.xpath('.//div[@class="divval"]/span[@class="label"]/text()')[0]
hr_children_time = cl.xpath('.//div[@class="divval"]/span[@class="showtime"]/text()')[0]
datas.append({'province': city.strip(), 'city': hr_children_name, 'val': hr_children_val, 'check_time': hr_children_time})
time.sleep(0.2)
with open(f'data_{datetime.datetime.now().strftime("%Y%m%d")}.txt', 'wt', encoding='UTF-8') as f:
for d in datas:
f.write(f'城市:{d["province"]}-{d["city"]},辐射值:{d["val"]},检测时间:{d["check_time"]}\r\n')
评论前必须登录!
注册