目標(biāo):爬取百度地圖上的興趣點(diǎn)
前期準(zhǔn)備工作:
1 注冊(cè)百度地圖開放平臺(tái)賬號(hào)
2 申請(qǐng)key
3 安裝pycharm或者vscode
百度地圖的興趣點(diǎn)檢索有三種方式,一種是按照行政區(qū)域檢索,一種是按照?qǐng)A形區(qū)域檢索,還有一種是按照矩形區(qū)域檢索。三種檢索方式本質(zhì)上是一樣的,只是在形式上有所不同,下面小編就以矩形區(qū)域檢索為例,給大家介紹一下,供大家參考學(xué)習(xí)。
首先引入request庫。requests是使用Apache2 licensed 許可證的HTTP庫,用python編寫,可以用來爬取網(wǎng)址上的資源。話不多說,下面只需要簡單幾行代碼即可將內(nèi)容爬取下來。
import requestsdef search(): # 行政區(qū)域爬取地址 urlArea = 'http://api.map.baidu.com/place/v2/search?query=ATM機(jī)&tag=銀行&' 'region=北京&output=json&ak=key' # 矩形區(qū)域爬取地址 urlRectangle = 'http://api.map.baidu.com/place/v2/search?query=餐廳&bounds=39.80,116.5,39.90,116.67&' 'output=json&page_size=20&page_num=0&ak=key' # 圓形區(qū)域爬取地址 urlCircle = 'http://api.map.baidu.com/place/v2/search?query=銀行&location=39.915,116.404&radius=2000&' 'output=json&ak=key' try: # get請(qǐng)求地址解析爬取內(nèi)容,超時(shí)未30s r = requests.get(urlArea, timeout=30) # 如果有錯(cuò)誤拋出異常 r.raise_for_status() # 將爬取內(nèi)容更改為utf-8編碼 r.encoding = r.apparent_encoding # 輸出爬取內(nèi)容 print(r.text) except: return '爬取異常'
上面代碼中的key是百度開發(fā)者中申請(qǐng)的key(如何注冊(cè)百度地圖開放平臺(tái)、申請(qǐng)key,可自行百度或者關(guān)注小編持續(xù)為您更新)
其中代碼里需要解釋的地方在下圖中展示
python爬蟲
下面展示行政區(qū)域地址的爬取結(jié)果為
爬取內(nèi)容
在HIJson中將json字符串格式化更容易查看
格式化json字符串
好了,今天就給大家分享到這里。這里僅展示如何爬取想要的內(nèi)容,還可以繼續(xù)對(duì)爬取結(jié)果進(jìn)行進(jìn)一步操作,如將內(nèi)容格式化編輯后保存到數(shù)據(jù)庫等。限于篇幅這里就不做介紹了。
寫在最后,網(wǎng)絡(luò)爬蟲的確能爬到大量的內(nèi)容,但是這里也會(huì)涉及到是否侵權(quán)的問題,稍微提一下,在爬取之前可以先看一下網(wǎng)站的Robots協(xié)議,哪些內(nèi)容可以爬取,哪些不可以爬取??傊氨I亦有道”,盡量給自己避免不必要的麻煩。本文例子僅限于學(xué)習(xí)科研之用。
想要完整代碼以及HiJson軟件的小伙伴可以關(guān)注私信我。
聯(lián)系客服