python爬取大众点评_浅谈python爬取58同城,大众点评这两个网站
1.爬取58同城租房網(wǎng)遇到的坑:我爬了一頁數(shù)據(jù)被封了ip,此時(shí)的我是非常的不爽,才十幾條數(shù)據(jù)就封我,于是我就想著一定得找ip代理來解決這個(gè)問題,后面就寫了個(gè)ip代理去弄,另外把之前頭部信息ua改成了ua池,然后再爬取58同城,瞬間爬到了數(shù)據(jù)。頭部信息如下:
from fake_useragent import UserAgent
import random
# ua = UserAgent(use_cache_server=False)
ua =UserAgent()
hd ={
"User-Agent":ua.random
}
爬取58成功搞定
2.爬取大眾點(diǎn)評(píng)景點(diǎn)名稱時(shí)遇到的坑:首先headers一定得加上,注意:refer很重要,一定得寫對(duì)。另外的話加不加代理其實(shí)都沒啥影響,只需要每次獲取cookie就可以了。
頭部信息headers如下:
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
#聲明一個(gè)CookieJar對(duì)象實(shí)例來保存cookie
cookie = cookiejar.CookieJar()
#利用urllib.request庫的HTTPCookieProcessor對(duì)象來創(chuàng)建cookie處理器,也就CookieHandler
cookie_support = request.HTTPCookieProcessor(cookie)
#通過CookieHandler創(chuàng)建opener
opener = request.build_opener(cookie_support)
#創(chuàng)建Request對(duì)象
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
這樣的話大眾點(diǎn)評(píng)就可以順利爬取了。
另外大眾點(diǎn)評(píng)的經(jīng)緯度是高德的,如果你想轉(zhuǎn)成百度的話,代碼如下:
#高德地圖轉(zhuǎn)百度地圖
def gcj02tobd09(lng, lat):
"""
火星坐標(biāo)系(GCJ-02)轉(zhuǎn)百度坐標(biāo)系(BD-09)
谷歌、高德——>百度
:param lng:火星坐標(biāo)經(jīng)度
:param lat:火星坐標(biāo)緯度
: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]
補(bǔ)充:經(jīng)過一個(gè)禮拜的爬數(shù)據(jù):針對(duì)網(wǎng)站:58,大眾點(diǎn)評(píng);總結(jié)如下:
第一:58同城這個(gè)網(wǎng)站如果使用代理ip的話,換不換ua沒有任何影響,換ua的話不使用ip代理的話就可能出現(xiàn)問題了,如鏈接超時(shí)了,404了等一系列錯(cuò)誤。
第二:大眾點(diǎn)評(píng)這個(gè)網(wǎng)站就是個(gè)坑了,爬著爬著突然給你來個(gè)驗(yàn)證碼,這時(shí)候要么你破解驗(yàn)證碼,要么手動(dòng)暫停程序再輸入驗(yàn)證碼,當(dāng)然這邊的話我不建議大家這么做太麻煩了。有人建議我說使用selenium去爬,我爬過,有時(shí)可以有時(shí)不行,當(dāng)你爬不同的數(shù)據(jù)的時(shí)候貌似有不同的效果,所以建議大家使用唯一有效的辦法就是自動(dòng)添加cookie,并且使用代理這樣的話基本大眾點(diǎn)評(píng)上的所有數(shù)據(jù)你應(yīng)該都可以爬下來,如果不使用代理的話,那就看運(yùn)氣吧,多運(yùn)行幾次數(shù)據(jù)也可以爬到,cookie一定得添加,不然拒絕你訪問的。-----------------------------------最后的最后叫大家一個(gè)更簡單的方法:爬安卓端數(shù)據(jù)。這樣啥都可以解決,沒毛病。(備注:有大佬發(fā)現(xiàn)我哪不對(duì)的話,或者有好的方法,還請(qǐng)給個(gè)建議,謝謝<>
QQ:979352156)
總結(jié)
以上是生活随笔為你收集整理的python爬取大众点评_浅谈python爬取58同城,大众点评这两个网站的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 股票打首板技巧
- 下一篇: 什么是ip地址(简答题)
