導入庫是由於庫裏有咱們須要用的函數,這些函數能幫咱們實現某些功能mysql
import requests import json import pymysql
你要提取什麼數據?web
假如咱們要提取美團一家娛樂場所的評論sql
連接地址:"https://i.meituan.com/xiuxianyule/api/getCommentList?poiId=184022819&offset=0&pageSize=10&sortType=1&mode=0&starRange=10%2C20%2C30%2C40%2C50&tag=數據庫
爬取這些評論
發送請求,得到響應。
咱們已經有url,能夠經過瀏覽器向服務器發送請求了。但實際是咱們並非經過瀏覽器向服務器發送請求的,而是經過爬蟲。若是服務器識別出來請求時爬蟲發出來的,那麼咱們就會被屏蔽掉,得到不了任何響應。因此咱們要把咱們寫的爬蟲包裝成瀏覽器。
那咱們如何在向服務器發送請求的時候,不被識別爲爬蟲。要想不被識別爲爬蟲,那就須要先假裝成瀏覽器,這須要在發送請求的時候加上headers參數。json
這裏就是咱們要的東西
接下來是代碼展現api
import requests import json import pymysql #建立數據庫鏈接 try: conn=pymysql.connect(host="localhost",user="root",passwd="123456",db="qu") except: print("數據庫鏈接失敗") #建立遊標對象 cur=conn.cursor() #假裝瀏覽器 headers_dict={ "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36" } def pc_comment(): url="https://i.meituan.com/xiuxianyule/api/getCommentList?poiId=184022819&offset=0&pageSize=10&sortType=1&mode=0&starRange=10%2C20%2C30%2C40%2C50&tag=" response=requests.get(url,headers=headers_dict) #將json字符串轉換成字典 dict1=json.loads(response.text) # print(dict1["data"]["commentTagDTOList"]) for item in dict1["data"]["commentTagDTOList"]: zz=item["count"] rq=item["tag"] print(rq) #聲明sql語句 sql="insert into test(name,talk) value('"+str(zz)+"','"+rq+"')" cur.execute(sql) conn.commit() conn.close() pc_comment()
由於有些網站不是異步請求,因此在這裏咱們不須要寫代理瀏覽器
運行結果:
再到數據庫中查看,是否是已經成功導入數據庫中了
服務器