一、网址:url = 'http://ep.nmemc.org.cn:8888/Water/'
二、代码
# !/usr/bin/env python # -*-coding:utf-8 -*- """ # File : 海水水质监测信息爬取.py # Time :2022/4/13 15:26 # Author :希维 # version :python 3.8 # Description: """ from fake_useragent import UserAgent import requests from lxml import etree """ """ url = 'http://ep.nmemc.org.cn:8888/Water/' header = {'User-Agent': UserAgent().random} resp = requests.get(url, verify=False, headers=header) resp.encoding = 'utf-8' print(resp.status_code) e = etree.HTML(resp.text) # print(resp.text) # print(e) # print(resp.text) # -------------------------解析数据---------------------- data_head = e.xpath('//table[@id="gridHd"]/tr/td/text()') # 头数据 li = e.xpath('//*[@id="gridDatas"]/li[1]/table/tr/td[1]/span/text()') # 主体内容数据 print(len(data_head)) with open('2021_山东.txt', 'w', encoding='Utf-8') as f: for i in data_head: f.writelines(str(i)+' ') #for i in li: # print(i) # text = i.xpath('//*[@id="gridDatas"]/li/table/tbody/tr/td/span/text()') # print(text) print(data_head)
三、由于解析问题,直接将目标html中的ui拿出来处理
# !/usr/bin/env python # -*-coding:utf-8 -*- """ # File : ceshi.py # Time :2022/4/13 16:32 # Author :希维 # version :python 3.8 # Description: """ from lxml import etree import codecs #可以不用这个 html = etree.parse('2021山东.html', etree.HTMLParser(encoding='utf-8')) # html = etree.tostring(html, encoding='utf-8', pretty_print=True, method='html') # html = html.decode('utf-8') li = html.xpath('//*[@id="gridDatas"]/li') f = codecs.open('2021_山东.txt', 'a', encoding='utf-8') f.write('\n') a = 0 for i in li: text = i.xpath('//tr/td/span/text()') for j in text: f.write(str(j)+' ') a+=1 if a%14==0: f.write("\n")
四、总结
在获取数据的过程中,数据编码问题处理了半天(不熟悉,没找对方向)
五、部分数据展示
海区 省份 地市 点位编码 实测经度 实测纬度 监测时间 pH 溶解氧 化学需氧量 无机氮 活性磷酸盐 石油类 水质类别 渤海 山东 滨州 SDB13001 118.10 38.33 2020-11 8.28 8.93 1.15 0.200 0.006 0.018 一类 渤海 山东 滨州 SDB13002 118.17 38.45 2020-11 8.21 8.61 1.56 0.095 0.002 0.034 一类 渤海 山东 滨州 SDB13003 117.97 38.29 2020-11 8.26 9.61 1.38 0.103 0.004 0.031 一类 渤海 山东 滨州 SDB13004 118.17 38.23 2020-11 8.25 8.94 1.04 0.179 0.011 0.020 一类 渤海 山东 滨州 SDB13005 117.94 38.33 2020-11 8.27 9.29 1.40 0.100 0.003 0.035 一类 渤海 山东 东营 SDB05001 118.64 38.23 2020-11 8.06 8.54 1.29 0.136 0.005 0.012 一类