最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Python?requests庫爬取高德地圖全國地鐵站點信息

 更新時間:2024年03月08日 12:19:06   作者:YiFoEr_Liu  
requests?模塊是?python?基于?urllib,采用?Apache2?Licensed?開源協(xié)議的?HTTP?庫,它比?urllib?更加方便,可以節(jié)約我們大量的工作,完全滿足?HTTP?測試需求,這篇文章主要介紹了利用Python?requests庫爬取高德地圖全國地鐵站點信息,需要的朋友可以參考下

requests庫

一、 基本概念

1、 簡介

requests 模塊是 python 基于 urllib,采用 Apache2 Licensed 開源協(xié)議的 HTTP 庫。它比 urllib 更加方便,可以節(jié)約我們大量的工作,完全滿足 HTTP 測試需求。Requests 的哲學(xué)是以 PEP 20 的習(xí)語為中心開發(fā)的,所以它比 urllib 更加 Pythoner

2、 獲取

通過 pip install requests 安裝 requests 庫

導(dǎo)包:

import requests

3、 http 協(xié)議

http ,超文本傳輸協(xié)議,是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。所有的WWW文件都必須遵守這個標(biāo)準(zhǔn)。設(shè)計HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁面的方法,HTTP是一種基于"請求與響應(yīng)"模式的、無狀態(tài)的應(yīng)用層協(xié)議。HTTP協(xié)議采用URL作為定位網(wǎng)絡(luò)資源的的標(biāo)識符

3.1 URL

統(tǒng)一資源定位符是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源地址?;ヂ?lián)網(wǎng)上的每一個文件都有一個唯一的 URL,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它

URL 的一般語法格式為:

protocol://host[:port]/path/[?query]#fragment
http://www.itcast.cn/index.html?name=andy&age=18#link
組成說明
protocol通信協(xié)議,常用:http、https 等
host主機(域名)
port端口號,可選,省略時候使用方案的默認端口,如:http的默認端口為80
path路徑,由零或多個 ‘/’ 符號隔開的字符串,一般用來表示主機上的一個目錄或文件地址
query參數(shù),以鍵值對的形式通過 & 來連接
fragment片段,# 后面內(nèi)容常見于鏈接 錨點

3.2 常用 http 請求方法

方法說明
requsts.requst()構(gòu)造一個請求,最基本的方法,是下面方法的支撐
requsts.get()獲取網(wǎng)頁,對應(yīng)HTTP中的GET方法
requsts.post()向網(wǎng)頁提交信息,對應(yīng)HTTP中的POST方法
requsts.head()獲取html網(wǎng)頁的頭信息,對應(yīng)HTTP中的HEAD方法
requsts.put()向html提交put方法,對應(yīng)HTTP中的PUT方法
requsts.patch()向html網(wǎng)頁提交局部請求修改的的請求,對應(yīng)HTTP中的PATCH方法
requsts.delete()向html提交刪除請求,對應(yīng)HTTP中的DELETE方法

GET,HEAD是從服務(wù)器獲取信息到本地,PUT,POST,PATCH,DELETE是從本地向服務(wù)器提交信息。通過URL和命令管理資源,操作獨立無狀態(tài),網(wǎng)絡(luò)通道及服務(wù)器成了黑盒子。

正文開始

利用Python requests庫爬取高德地圖全國地鐵站點信息

利用Python中的requests庫進行地鐵站點信息的獲取,同時將數(shù)據(jù)保存在本機excel中

# 首先引入所需要的包
import requests
from bs4 import BeautifulSoup
import pandas as pd
import json
# 發(fā)送 GET 請求獲取網(wǎng)頁內(nèi)容
url = 'http://map.amap.com/subway/index.html'
response = requests.get(url)
# 第一步:爬取兩個 div 中的城市數(shù)據(jù)(包括 ID 和拼音),生成城市集合
if response.status_code == 200:
    # 解碼
    response_content = response.content.decode('utf-8')
    # 使用 Beautiful Soup 解析網(wǎng)頁內(nèi)容
    soup = BeautifulSoup(response_content, 'html.parser')
    # 從這里開始,你可以使用 Beautiful Soup 對象(soup)來提取所需的信息
    # 例如,查找標(biāo)題
    title = soup.title
    # 通過Beautiful Soup來找到城市信息元素,并提取這個元素的信息
    for soup_a in soup.find('div', class_='city-list fl').find_all('a'):
        city_name_py = soup_a['cityname']
        city_id = soup_a['id']
        city_name_ch = soup_a.get_text()
        city_info_list.append({'name_py': city_name_py, 'id': city_id, 'name_ch': city_name_ch})
        # 獲取未顯示出來的城市列表
    for soup_a in soup.find('div', class_='more-city-list').find_all('a'):
        city_name_py = soup_a['cityname']
        city_id = soup_a['id']
        city_name_ch = soup_a.get_text()
        city_info_list.append({'name_py': city_name_py, 'id': city_id, 'name_ch': city_name_ch})
        print(city_info_list)
else:
    print("無法獲取網(wǎng)頁內(nèi)容")
for city_info in city_info_list:
    city_id = city_info.get("id")
    city_name = city_info.get("name_py")
    city_name_ch = city_info.get("name_ch")
    print("開始爬取城市" + city_name_ch + "的數(shù)據(jù)")
    city_lines_list = []
    # 第二步:遍歷城市集合,構(gòu)造每一個城市的 url,并下載數(shù)據(jù)
    # 構(gòu)造每個城市的url
    url = "http://map.amap.com/service/subway?_1717380520536&srhdata=" + city_id + '_drw_' + city_name + '.json'
    res = requests.get(url)
    content = res.content.decode('utf-8')
    # 將內(nèi)容字符串轉(zhuǎn)換成json對象
    content_json = json.loads(content)
    # 提取該城市的所有地鐵線list
    line_info_list = content_json.get("l")
    # 第三步:開始處理每一個地鐵線,提取內(nèi)容到dataframe中
    for line_info in line_info_list:
        # 地鐵線名字
        line_name = line_info["kn"]
        # 處理地鐵線站點
        df_per_zd = pd.DataFrame(line_info["st"])
        df_per_zd = df_per_zd[['n', 'sl', 'poiid', 'sp', 't', 'su', 'sid']]
        df_per_zd['gd經(jīng)度'] = df_per_zd['sl'].apply(lambda x: x.split(',')[0])
        df_per_zd['gd緯度'] = df_per_zd['sl'].apply(lambda x: x.split(',')[1])
        df_per_zd.drop('sl', axis=1, inplace=True)
        df_per_zd['路線名稱'] = line_info['ln']
        df_per_zd['城市名稱'] = city_name_ch
        df_per_zd.rename(columns={"n": "站點名稱", "poiid": "POI編號", "sp": "拼音名稱", "t": "換乘標(biāo)志 1:換乘,0:不可換乘", "su": "su", "sid": "sid編號"}, inplace=True)
        # 先將這條地鐵線處理過的dataframe存起來,我們后面給他放到一張表里
        city_lines_list.append(df_per_zd)
    # 這段代碼就是將地鐵線數(shù)據(jù)列表聚合到一張表里,形成每個城市的地鐵站數(shù)據(jù)
    city_subway_data = pd.concat(city_lines_list, ignore_index=True)
    # 第四步:將處理好的文件保存為xlsx
    city_subway_data.to_excel(city_name_ch + '.xlsx', sheet_name='Sheet1')

到此這篇關(guān)于利用Python requests庫爬取高德地圖全國地鐵站點信息的文章就介紹到這了,更多相關(guān)Python爬取地鐵站點信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實現(xiàn)打磚塊游戲

    python實現(xiàn)打磚塊游戲

    這篇文章主要為大家詳細介紹了Python實現(xiàn)打磚塊游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 利用Python將數(shù)值型特征進行離散化操作的方法

    利用Python將數(shù)值型特征進行離散化操作的方法

    今天小編就為大家分享一篇利用Python將數(shù)值型特征進行離散化操作的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • 淺析python實現(xiàn)scrapy定時執(zhí)行爬蟲

    淺析python實現(xiàn)scrapy定時執(zhí)行爬蟲

    這篇文章主要介紹了淺析python實現(xiàn)scrapy定時執(zhí)行爬蟲的相關(guān)資料,需要的朋友可以參考下
    2018-03-03
  • Django中g(shù)et()與filter()的區(qū)別及常見錯誤

    Django中g(shù)et()與filter()的區(qū)別及常見錯誤

    Django中g(shù)et()和filter()是數(shù)據(jù)查詢的核心方法,本文就來介紹一下Django中g(shù)et()與filter()的區(qū)別及常見錯誤,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-11-11
  • python實現(xiàn)校園網(wǎng)自動登錄的示例講解

    python實現(xiàn)校園網(wǎng)自動登錄的示例講解

    下面小編就為大家分享一篇python實現(xiàn)校園網(wǎng)自動登錄的示例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python基于回溯法子集樹模板解決馬踏棋盤問題示例

    Python基于回溯法子集樹模板解決馬踏棋盤問題示例

    這篇文章主要介紹了Python基于回溯法子集樹模板解決馬踏棋盤問題,簡單描述了國際象棋馬踏棋盤問題,并結(jié)合實例形式分析了Python使用回溯法子集樹模板解決馬踏棋盤問題的具體步驟與相關(guān)操作注意事項,需要的朋友可以參考下
    2017-09-09
  • pycharm找不到解釋器問題的解決方案

    pycharm找不到解釋器問題的解決方案

    安裝好PyCharm之后,新建或者導(dǎo)入項目碰到找不到解釋器的情況,不用擔(dān)心,追根到底,咱們就是需要找到pycharm*.exe的文件,那么這個文件在哪里呢?所以本文就給大家介紹一下pycharm找不到解釋器問題的解決方案,需要的朋友可以參考下
    2024-04-04
  • Python Django模板之模板過濾器與自定義模板過濾器示例

    Python Django模板之模板過濾器與自定義模板過濾器示例

    這篇文章主要介紹了Python Django模板之模板過濾器與自定義模板過濾器,結(jié)合實例形式分析了Django框架模板過濾器與自定義模板過濾器相關(guān)功能、原理、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-10-10
  • PYQT5設(shè)置textEdit自動滾屏的方法

    PYQT5設(shè)置textEdit自動滾屏的方法

    今天小編就為大家分享一篇PYQT5設(shè)置textEdit自動滾屏的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python工具模塊介紹之time?時間訪問和轉(zhuǎn)換的示例代碼

    python工具模塊介紹之time?時間訪問和轉(zhuǎn)換的示例代碼

    這篇文章主要介紹了python工具模塊介紹-time?時間訪問和轉(zhuǎn)換,本文通過示例代碼給大家介紹的非常詳細,對大家啊的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04

最新評論

遵义市| 定南县| 威远县| 邢台县| 建德市| 巴南区| 丹江口市| 奈曼旗| 朝阳市| 吕梁市| 双城市| 乌兰浩特市| 阿拉善盟| 塔城市| 台北市| 建水县| 方城县| 法库县| 延边| 阆中市| 青田县| 读书| 镇远县| 盐城市| 平遥县| 冕宁县| 吉安县| 墨脱县| 西华县| 米泉市| 新丰县| 台中市| 呼玛县| 南溪县| 紫云| 杭锦后旗| 射洪县| 元朗区| 章丘市| 布尔津县| 乳山市|