日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python爬取地表水水质监测数据(爬虫)

發布時間:2024/3/12 python 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬取地表水水质监测数据(爬虫) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一、參考博客
  • 二、分析說明
  • 三、查看源碼
  • 四、相關變量改動
  • 五、代碼運行
  • 六、運行結果
  • 七、注意


前言

第一篇博客,也是一個新手,寫博客的目的也是為記錄下自己的學習和解決問題的過程,同時也為其他有需要的小伙伴提供一些幫助。本人來自某高校一名小博士生,主要研究方向為水資源環境遙感,最近老板讓我爬取下地表水水質監測數據,查閱了很多博客,參考了些他人的博客,加上一些變量改動,最后運行成功。本人非專業編程人士,僅提供參考。


一、參考博客

  • python+selenium+phantomJS爬取國家地表水水質自動監測實時數據發布系統——動態網頁爬蟲-------張俊杰@Nick
    鏈接地址
  • python+selenium+Chrome(無頭版)爬取國家地表水水質自動監測實時數據發布系統(修改版)——動態網頁爬蟲------張俊杰@Nick
    鏈接地址
  • 二、分析說明

    (一)原文介紹

    該網站爬取的難度在于其是個動態網站,相信大家也聽說過八爪魚,一款非常好用的數據爬取軟件,但該地表水水質監測網站是個動態網頁,本人做了相應嘗試,發現只能爬取一部分數據,并不能爬取完整的數據,后轉戰python,在前人的基礎上稍作修改,最后成功運行。下面我們來看看(參考博客的介紹)

    大家注意圖中的3個地方:
    1、第③個位置是數據位置;
    2、如果網頁返回了所有的數據,我們只需要定位這3個地方就可以一步步爬取到數據,這就跟之前的代碼沒什么區別了;
    3、難就難在,這個網頁固定返回60條數據,每一次滾動都會重新返回一下;
    4、這樣的話,我們怎么爬取也很難保證數據的完整性,要么冗余,要么缺失;
    5、但是,仔細查看網頁就會發現,網站提供另外一個接口,允許我們查看全部數據(看下圖);
    6、只需要點擊“所有流域”,就會返回這一天內所有上報的數據; 7、我們只需要定位到“button”,點擊一下(click())就可以了。

    代碼如下(示例):

    #--author--張俊杰@Nick import datetime import pandas as pd from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.chrome.options import Options #建議使用谷歌瀏覽器 import time chrome_options = Options() chrome_options.add_argument('--headless') #使不使用headless版本,也許你想感受一下瀏覽器自動打開,自動點擊的快感,也不一定 browser = webdriver.Chrome(chrome_options=chrome_options,executable_path = 'C:/Users/Administrator/AppData/Local/Google/Chrome/Application/chromedriver.exe') #chromedriver下載下來之后復制到chrome.exe同文件夾下即可 print("打開網頁中。。。") browser.get("http://106.37.208.243:8068/GJZ/Business/Publish/Main.html") print("網頁響應中。。。") wait = WebDriverWait(browser,20)#畢竟代碼運行的速度和瀏覽器打開的速度不再一個量級,一個閃電俠,一個奧特曼 wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID,"mainframe")))#這一步很關鍵 browser.find_element_by_id('ddm_River').click()#模擬點擊“流域” browser.find_element_by_xpath("/html/body/div[1]/div[2]/div/ul/li[1]").click()#模擬點擊“所有流域” wait.until(EC.presence_of_element_located((By.CLASS_NAME,"grid")))#定位到數據 print("獲取網頁數據中。。。") time.sleep(10) soup = BeautifulSoup(browser.page_source,"lxml") browser.close() data_head = soup.select(".panel-heading")[0] grid_data = soup.select(".grid")[0] data_colhead = data_head.findAll("td") data_rows = grid_data.findAll("tr") water_df = pd.DataFrame(columns=[c.text for c in data_colhead]) print("提取網頁數據中。。。") for i,data_row in enumerate(data_rows):water_loc = water_df.iloc[:,0].valueswater_data = water_df.iloc[:,1].valuesrow_dat = [r.text for r in data_row]water_df.loc[i] = row_dat #系統時間 data_str = datetime.datetime.now().strftime('%Y_%m_%d') #可修改保存路徑 water_df.to_csv("E:/python/國家地表水爬蟲/%s_國家地表水水質自動監測系統檢測數據.csv" % (data_str),index=None, encoding="GB18030") print("數據提取完成!!")

    (二)原因分析

    相信有很多朋友都直接copy代碼去運行了,當然最后的結果肯定是報錯。我們來簡單分析了相關原因:細心的朋友發現現有網站和原博客介紹的網站又有所變化了,所以拿以前的代碼爬取新的網站當然是行不通的。

    三、查看源碼

    在google瀏覽器上登錄相應網站,按F12查看源碼,我們來看看改動的有哪些地方
    1.如圖所示

    2. 如圖所示

    四、相關變量改動

    廢話不多說,直接上圖,圖中紅色框中的都是需要改動的地方。
    另外,博主在代碼運行中發現26行soup = BeautifulSoup(browser.page_source,“lxml”)處也進行了報錯,在嘗試了多種方法后,終于解決。將其改為如下即可:

    soup = BeautifulSoup(browser.page_source,"html.parser")

    五、代碼運行

    將第四章節中介紹的需改動變量部分進行修正,代碼如下:

    import datetime import pandas as pd from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.chrome.options import Options #建議使用谷歌瀏覽器 import time chrome_options = Options() chrome_options.add_argument('--headless') #使不使用headless版本,也許你想感受一下瀏覽器自動打開,自動點擊的快感,也不一定 browser = webdriver.Chrome(chrome_options=chrome_options,executable_path = 'E:/Google/Chrome/Application/chromedriver.exe') #chromedriver下載下來之后復制到chrome.exe同文件夾下即可 print("打開網頁中。。。") browser.get("http://106.37.208.243:8068/GJZ/Business/Publish/Main.html") print("網頁響應中。。。") wait = WebDriverWait(browser,20)#畢竟代碼運行的速度和瀏覽器打開的速度不再一個量級,一個閃電俠,一個奧特曼 wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID,"MF")))#這一步很關鍵 browser.find_element_by_id('ddm_Area').click()#模擬點擊“區域” browser.find_element_by_xpath("/html/body/div[1]/div[1]/div/ul/li[1]").click()#模擬點擊“所有區域” wait.until(EC.presence_of_element_located((By.CLASS_NAME,"panel")))#定位到數據 print("獲取網頁數據中。。。") time.sleep(10) soup = BeautifulSoup(browser.page_source,"html.parser") browser.close() data_head = soup.select(".panel-heading")[0] grid_data = soup.select(".panel")[0] data_colhead = data_head.findAll("td") data_rows = grid_data.findAll("tr") water_df = pd.DataFrame(columns=[c.text for c in data_colhead]) print("提取網頁數據中。。。") for i,data_row in enumerate(data_rows):water_loc = water_df.iloc[:,0].valueswater_data = water_df.iloc[:,1].valuesrow_dat = [r.text for r in data_row]water_df.loc[i] = row_dat #系統時間 data_str = datetime.datetime.now().strftime('%Y_%m_%d_%H') #可修改保存路徑 water_df.to_csv("填寫相應的保存路徑/%s_國家地表水水質自動監測系統檢測數據.csv" % (data_str),index=None, encoding="GB18030") print("數據提取完成!!")

    六、運行結果

    七、注意

    此外,需注意的是,本人運用pycharm版本為2021.2.3版本,python編譯器為3.7。
    附上pycharm和python下載地址
    PyCharm下載安裝教程
    python下載地址

    總結

    以上是生活随笔為你收集整理的python爬取地表水水质监测数据(爬虫)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 精品国产欧美一区二区三区成人 | 久久精品www| 免费视频网站www | 女色综合 | 四虎成人精品在永久免费 | 在线观看视频 | 伊人网伊人影院 | 亚洲成人久 | 97在线播放免费观看 | av电影在线观看网址 | 国产精品毛片va一区二区三区 | 国产美女流白浆 | 成人精品一区二区三区 | 91黄色在线观看 | 真实乱视频国产免费观看 | 日韩欧美一级在线 | 三级伦理片 | 日韩中文第一页 | 中文字幕在线播放日韩 | 久久久久久91亚洲精品中文字幕 | 91麻豆精品国产91久久久久久久久 | 欧美性猛交7777777 | 午夜精品偷拍 | 女儿的朋友5中汉字晋通话 欧美成人免费高清视频 | 国产高清一区 | 青青草视频免费 | 女同亚洲精品一区二区三 | 亚洲国产精品无码久久久久高潮 | 啪啪短视频 | 乌克兰做爰xxxⅹ性视频 | 大又大粗又爽又黄少妇毛片 | 午夜精品偷拍 | 免费观看毛片视频 | 午夜久久久久久噜噜噜噜 | 日韩五码电影 | 日韩av电影网站 | 国产伦精品一区二区三区照片91 | 欧美a久久 | 91精品国产麻豆国产自产在线 | 丰满人妻一区二区三区53号 | 影音先锋成人资源站 | 亚洲砖区免费 | 操人网 | 性做久久久久久久久 | 久久久久久国产精品三级玉女聊斋 | 中国av在线 | 国产成人精品一区二区三区无码熬 | 精品无码久久久久久久久久 | 精品久久久中文字幕 | 69视频网址 | 一级黄色影院 | 亚洲AV成人无码久久 | www.久久久久久 | 自拍偷拍日韩精品 | 伊人久久av| 欧美高清 | 成人免费视频国产 | 国产区二区| 国产精品久久久久电影 | 七月丁香婷婷 | 欧美一级α片 | 国产精品久久国产精品99 | 国产精品第56页 | 日韩在线视频二区 | 中文字幕国产亚洲 | 欧美变态绿帽cuckold | 一级成人免费视频 | 羞羞网站在线观看 | 中文字幕在线观看日本 | 中文日韩在线 | 亚洲国产精品久久 | 殴美性生活 | 日本一区二区视频在线播放 | 99热黄色| 97人妻人人揉人人躁人人 | 精品人妻一区二区免费 | 三上悠亚在线一区二区 | 亚洲第一区在线播放 | 熟妇高潮精品一区二区三区 | 亚洲综合欧美日韩 | 久久免费av | 毛片最新网址 | 69av一区二区三区 | 欧美女同在线 | 神宫寺奈绪一区二区三区 | 国产性猛交普通话对白 | 亚洲性激情 | 欧美福利一区 | 国产欧美激情 | 毛片网站免费在线观看 | 欧美乱三级 | 欧美在线观看www | 学生孕妇videosex性欧美 | 男女啪啪软件 | 任你躁av一区二区三区 | 亚洲AV无码一区二区三区少妇 | 人人看人人看 | 91夫妻视频 | 成人黄色免费在线观看 |