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

歡迎訪問 生活随笔!

生活随笔

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

python

Python爬虫实战(2) 爬取中国土壤数据库部分数据

發布時間:2023/12/9 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python爬虫实战(2) 爬取中国土壤数据库部分数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前幾天,因為學校的通信感知實習需要作者利用一些邊緣設備像傳感器來獲取土壤的相關數據,奈何作者家境貧寒,買不起傳感器,所以說打算去到中國土壤數據庫上面去爬取一些數據下來(白嫖真爽)

1.分析網頁的結構

要設計一個網絡爬蟲程序設計,首先要分析網頁的代碼結構。

打開要獲取數據信息的網站:

**網頁:**http://vdb3.soil.csdb.cn

這里我們選擇福建省作為要爬取數據的對象

選擇漳州市

隨便點擊一個土種信息,這里我點擊了青底灰泥田

點擊查看,進入到最終的網頁

我們只需要獲取這些數據就可以了

PS:數據有些是空的,我們爬取下來后需要改成null字樣,不能讓它空著

我們這時候看下網站的域名:

網站域名

可以看到后面跟了參數:id = 10503

打開網頁的代碼查看器(按下F12鍵),則可以看到當前頁面的代碼結構,如下圖

可以看到,標題存放在<div>中,而標題所對應的數據也存放在<div>中。只不過這兩個標簽它們的屬性不一樣。

2.獲取數據

根據頁面的代碼結構分析,我們知道只要找到 <div>標簽,就能獲得相對應的數據

首先我們利用 requests 來獲取網頁內容

其中:

  • kw是來存放我們的 URL 參數的,我們手動輸入的參數會添加到URL后面,這樣就能實現隨便爬取任何一個地方一個土種的數據信息了
  • 設置模擬瀏覽器和時間間隔為5s,用來防止目標服務器的反爬蟲機制
def get_pages(url):kw = {}args = str(input("請輸入要查詢的參數:"))kw["id"] = argsheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}response = requests.get(url=url, params=kw, headers=headers, timeout=5)content = response.textreturn content

將獲取到的內容進行解析

這部分比較長,因為我們還要將獲取到的數據進行二次加工:

  • 將爬取到的數據進行有目的的選擇,挑選出我們需要的數據:只需要:土地利用、有機質、全氮、全磷、全鉀這幾個標題
  • 如果標題的數據值為空,則顯示 null 字樣。

def parse_content(contents):soup = bs4.BeautifulSoup(contents, "lxml")# 獲取 土地利用, 有機質(%), 全氮(%), 全磷(%),全鉀(%)title_col_list = soup.find_all('div', class_="titlecol")list1 = []list2 = []for info in title_col_list:list1.append(info.text.strip())list1 = list1[-7:]list2.append(list1[0])list2.extend(list1[-4:])# 將‘土地利用, 有機質(%), 全氮(%), 全磷(%),全鉀(%)’信息列表賦值info_list = list2# 獲取 對應的詳細數據data_col_list = soup.find_all('div', class_="datacol")list3 = []list4 = []for data in data_col_list:list3.append(data.text.strip())list3 = list3[-7:]del list3[1:3]for i in list3:if i == '':# 將空格元素修改為nullindex = list3.index(i)list3[index] = 'null'data_list = list3# 返回兩個列表return info_list, data_list

將獲取的數據進行歸并

合并成一個字典

def download_data(url):contents = get_pages(url)info_list, data_list = parse_content(contents)# 將兩個列表合并為一個字典,用zip方法dic1 = {}dic1 = dict(zip(info_list, data_list))return dic1

結果

最后,我們來看一下結果如何

可以看到,我們要爬取的這一當前頁面參數為id = 10013

其中相關數據為

結果如下:

3.源代碼

最后,附上源代碼:

# -*- conding=utf-8 -*- import requests import bs4def get_pages(url):kw = {}args = str(input("請輸入要查詢的參數:"))kw["id"] = argsheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}response = requests.get(url=url, params=kw, headers=headers, timeout=5)content = response.textreturn contentdef parse_content(contents):soup = bs4.BeautifulSoup(contents, "lxml")# 獲取 土地利用, 有機質(%), 全氮(%), 全磷(%),全鉀(%)title_col_list = soup.find_all('div', class_="titlecol")list1 = []list2 = []for info in title_col_list:list1.append(info.text.strip())list1 = list1[-7:]list2.append(list1[0])list2.extend(list1[-4:])# 將‘土地利用, 有機質(%), 全氮(%), 全磷(%),全鉀(%)’信息列表賦值info_list = list2# 獲取 對應的詳細數據data_col_list = soup.find_all('div', class_="datacol")list3 = []list4 = []for data in data_col_list:list3.append(data.text.strip())list3 = list3[-7:]del list3[1:3]for i in list3:if i == '':# 將空格元素修改為nullindex = list3.index(i)list3[index] = 'null'data_list = list3# 返回兩個列表return info_list, data_listdef download_data(url):contents = get_pages(url)info_list, data_list = parse_content(contents)# 將兩個列表合并為一個字典,用zip方法dic1 = {}dic1 = dict(zip(info_list, data_list))return dic1if __name__ == "__main__":url = '''vdb3.soil.csdb.cn/front/detail-%E5%85%A8%E5%9B%BD%E7%AC%AC%E4%BA%8C%E6%AC%A1%E5%9C%9F%E5%A3%A4%E6%99%AE%E6%9F%A5%E5%86%9C%E7%94%B0%E8%82%A5%E5%8A%9B%E6%95%B0%E6%8D%AE%E5%BA%93$fer_second_nutrient?'''print("------------------------開始爬取數據-----------------------------------------")dict1 = download_data(url)print("數據為:\n", dict1)print("\n------------------------爬取數據完畢!----------------------------------")

總結

以上是生活随笔為你收集整理的Python爬虫实战(2) 爬取中国土壤数据库部分数据的全部內容,希望文章能夠幫你解決所遇到的問題。

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