如下所示:
1.pip install requests
2.pip install lxml
3.pip install xlsxwriter
import requests #想要爬必須引from lxml import html #這個(gè)是用于頁(yè)面爬取import xlsxwriter#操作Excel表格庫(kù) workbook = xlsxwriter.Workbook('E:/test/test.xlsx')# 新建的Excel表格文檔路徑worksheet = workbook.add_worksheet() # 建立sheet, 可以work.add_worksheet('employee')來(lái)指定sheet名,但中文名會(huì)報(bào)UnicodeDecodeErro的錯(cuò)誤i = 1;# 作用于Excel表格第幾行數(shù)與接口第幾頁(yè)#寫一個(gè)死循環(huán)讓他一直爬取數(shù)據(jù)while (True): import json# 這里這么引入json是因?yàn)椴贿@么引入當(dāng)循環(huán)到第二次就會(huì)報(bào)沒有引入json的錯(cuò),所以循環(huán)引入了 #接口str(i)表示第幾頁(yè)一定要轉(zhuǎn)為字符串格式,要不會(huì)報(bào)不是字符串的錯(cuò) url = "https://www.amap.com/service/poiInfo?query_type=TQUERY&pagesize=20&pagenum="+str(i)+"&qii=true&cluster_state=5&need_utd=true&utd_sceneid=1000&div=PC1000&addr_poi_merge=true&is_classify=true&zoom=14.81&city=110000&geoobj=115.7|39.4|117.4|41.6&keywords=水果店" # 將cookies字符串組裝為字典 cookies_str = "guid=f86f-79f2-5b0b-69a3; UM_distinctid=16386a114ca143-07312d6ae4d5af8-47534130-1fa400-16386a114ccb85; CNZZDATA1255626299=1778515027-1526967763-https%253A%252F%252Fwww.baidu.com%252F%7C1527219534; cna=5hWHEx7lRkECAXL4l+2LMAfU; isg=BGBg3rAqL6QOz5OkNN5wbxWiMm7ywUxc_zvQMtpxLHsO1QD_gnkUwzbHaf3V_vwL; _uab_collina=152697209566826431413694; key=bfe31f4e0fb231d29e1d3ce951e2c780" cookies_dict = {} for cookie in cookies_str.split(";"): k, v = cookie.split("=", 1) cookies_dict[k.strip()] = v.strip() pass # 其他請(qǐng)求頭參數(shù) headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0' } # 讓服務(wù)器認(rèn)為你是通過(guò)瀏覽器訪問(wèn)頁(yè)面 page = requests.get(url=url,cookies=cookies_dict,headers=headers); # 轉(zhuǎn)json json = json.loads(page.text); # 判斷這個(gè)字段如果為未找到相關(guān)信息則跳出死循環(huán) if json['data']['lqii']['change_query_tip'] == '未找到"水果店"相關(guān)結(jié)果': break; pass # 獲取json長(zhǎng)度用于添加Excel第幾行 length = len(json['data']['poi_list']); # 循環(huán)json數(shù)據(jù)向Excel表格添加 for index,j in enumerate(json['data']['poi_list']): worksheet.write(index+(i-1)*length,0,j['disp_name']) worksheet.write(index+(i-1)*length,1,j['tel']) worksheet.write(index+(i-1)*length,2,j['address']) pass i+=1passworkbook.close()#最后關(guān)閉Excel表格 注意事項(xiàng),當(dāng)Excel表格正在打開的情況下會(huì)報(bào)沒有關(guān)閉的錯(cuò)所以請(qǐng)關(guān)閉Excel再運(yùn)行此程序
以上這篇python requests爬取高德地圖數(shù)據(jù)的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林站長(zhǎng)站。
新聞熱點(diǎn)
疑難解答
圖片精選