xiWeiFF
一、网址: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  一类  

相关文章: