1.爬取58同城租房網遇到的坑:我爬了一頁數據被封了ip,此時的我是很是的不爽,才十幾條數據就封我,因而我就想着必定得找ip代理來解決這個問題,後面就寫了個ip代理去弄,另外把以前頭部信息ua改爲了ua池,而後再爬取58同城,瞬間爬到了數據。頭部信息以下:html
from fake_useragent import UserAgent import random # ua = UserAgent(use_cache_server=False) ua =UserAgent() hd ={ "User-Agent":ua.random }
爬取58成功搞定python
2.爬取大衆點評景點名稱時遇到的坑:首先headers必定得加上,注意:refer很重要,必定得寫對。另外的話加不加代理其實都沒啥影響,只須要每次獲取cookie就能夠了。cookie
頭部信息headers以下:dom
hd_xq = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36', 'Cookie':'s_ViewType=10; _hc.v=75fb4106-ab4f-b6a4-2415-b2aa30583f05.1524064271; _lxsdk_cuid=162d94f3c0ec8-0ed6c642bd8a38-b353461-100200-162d94f3c0fc8; _lxsdk=162d94f3c0ec8-0ed6c642bd8a38-b353461-100200-162d94f3c0fc8; _lxsdk_s=162d94f3c10-dc5-32f-fc3%7C%7C155', 'Referer':'http://www.dianping.com/shenzhen/ch35/g33831', 'Connection':'keep-alive' }
獲取cookie的方法:網站
def get_cookies(): from urllib import request from http import cookiejar #聲明一個CookieJar對象實例來保存cookie cookie = cookiejar.CookieJar() #利用urllib.request庫的HTTPCookieProcessor對象來建立cookie處理器,也就CookieHandler cookie_support = request.HTTPCookieProcessor(cookie) #經過CookieHandler建立opener opener = request.build_opener(cookie_support) #建立Request對象 req1 = request.Request(url='http://www.dianping.com/shop/1705777',headers=hd_xq) response1 = opener.open(req1) html = response1.read().decode('utf-8') return html
這樣的話大衆點評就能夠順利爬取了。ui
另外大衆點評的經緯度是高德的,若是你想轉成百度的話,代碼以下:url
#高德地圖轉百度地圖 def gcj02tobd09(lng, lat): """ 火星座標系(GCJ-02)轉百度座標系(BD-09) 谷歌、高德——>百度 :param lng:火星座標經度 :param lat:火星座標緯度 :return: """ z = math.sqrt(lng * lng + lat * lat) + 0.00002 * math.sin(lat * x_pi) theta = math.atan2(lat, lng) + 0.000003 * math.cos(lng * x_pi) bd_lng = z * math.cos(theta) + 0.0065 bd_lat = z * math.sin(theta) + 0.006 print(bd_lng) print(bd_lat) return [bd_lng, bd_lat]
補充:通過一個禮拜的爬數據:針對網站:58,大衆點評;總結以下:代理
第一:58同城這個網站若是使用代理ip的話,換不換ua沒有任何影響,換ua的話不使用ip代理的話就可能出現問題了,如連接超時了,404了等一系列錯誤。code
第二:大衆點評這個網站就是個坑了,爬着爬着忽然給你來個驗證碼,這時候要麼你破解驗證碼,要麼手動暫停程序再輸入驗證碼,固然這邊的話我不建議你們這麼作太麻煩了。有人建議我說使用selenium去爬,我爬過,有時能夠有時不行,當你爬不一樣的數據的時候貌似有不一樣的效果,因此建議你們使用惟一有效的辦法就是自動添加cookie,而且使用代理這樣的話基本大衆點評上的全部數據你應該均可以爬下來,若是不使用代理的話,那就看運氣吧,多運行幾回數據也能夠爬到,cookie必定得添加,否則拒絕你訪問的。-----------------------------------最後的最後叫你們一個更簡單的方法:爬安卓端數據。這樣啥均可以解決,沒毛病。(備註:有大佬發現我哪不對的話,或者有好的方法,還請給個建議,謝謝<>server
QQ:979352156)