Python爬蟲系列-途家

途家網(wǎng)不算很難爬,雖然它在同類網(wǎng)站中被我放到了最后。房間數(shù)用bs不算難取,而且城市列表也是用js很快就找到了。


1.png

這里就把新學(xué)到的兩個(gè)知識點(diǎn)寫一下:

2.png

首先是途家的js包有點(diǎn)怪,類似天氣網(wǎng)的包,所以要用切片或者截取字符串的形式摘取字典。它的前面不但有var...等字符,最后還有一個(gè)分號,所以前后都要摘取。
這里我開始寫的切片不對,請教yaung大神后應(yīng)該是以下幾種格式:
字符串格式,用replace語句

city_data=requests.get(url='https://www.tujia.com/Common/CityInfo/').content.decode('utf-8')
city_data=str(city_data).replace('var cityInfo = ','').replace(';', '')

print(city_data)
city_info=json.loads(city_data)
print(city_info['hotgroup'])

我后來改對的,用strip語句

city_data=str(city_data).lstrip('var cityInfo = ').rstrip(';')

切片格式:

city_data = str(city_data)[len('var cityInfo = '):-1]

我原來也是這種格式,但我犯了傻,一個(gè)個(gè)數(shù)字符,其實(shí)用len函數(shù)就好了嘛,而且也沒有用‘-1’去把后面的分號去掉,所以改來改去都不對。

我是繼續(xù)犯傻的分界線


然后把城市名調(diào)入網(wǎng)頁url的格式,也還是沒有掌握好,
一種是

city_id='sanya'
url='http://www.baidu.com?{}.html'.format(city_id)
print city_url 

這里我光是套入了{(lán)},忘了寫format(明明以前的代碼有示范),所以死活讀不出來。
另外一個(gè)格式是用%s,這個(gè)書里有學(xué),但還是不會活用。


city_id='sanya'
url='http://www.baidu.com?%s.html'
city_url=url % city_id

打印url是為了:一般構(gòu)造完以后,測試時(shí)候先把構(gòu)造的url打印一下,再請求。如果url都沒有構(gòu)造對,封裝函數(shù)也是解析不出數(shù)據(jù)的。-by程工

按理說 requests.get(url).content 方法是返回的byte型源碼,可以不用decode('utf-8'),但我這里就會報(bào)錯(cuò),不知道是不是跟后面的犯傻有關(guān)。

附上部分代碼,其他請求頭那些就不再寫了。

def get_city_room_num(city_temp):
    url = 'https://www.tujia.com/{city_temp}_gongyu/'.format(city_temp)
    html = requests.get(url, headers=get_headers()).content
    soup=BeautifulSoup(html,'html.parser')
    number = soup.find('div',attrs={'class': 'total-house-amount'})
    return number

url2 = 'https://www.tujia.com/***'
html=requests.get(url2,headers=get_headers()).content.decode('utf-8')
html=str(html).lstrip('var cityInfo = ').rstrip(';')
infos1=json.loads(html)
infos=infos1['citys']

今天其實(shí)還犯了第三件傻事,把一個(gè)很重要的json encoding文件刪掉了。重裝python以后也沒找回來,pip安裝都報(bào)錯(cuò),最后裝了anacoda搞掂。

希望明天人品好,不要在json上給我搗亂了,不然真的好花時(shí)間。
又學(xué)到了新的東西,還是挺高興的~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,625評論 18 399
  • 出處---Go編程語言 歡迎來到 Go 編程語言指南。本指南涵蓋了該語言的大部分重要特性 Go 語言的交互式簡介,...
    Tuberose閱讀 18,717評論 1 46
  • 發(fā)心:我今不是為了我個(gè)人而聞思修,而是為了六道輪回一切如母有情眾生,愿一切如母有情眾生能夠早日離苦得樂,清凈業(yè)障,...
    曉茂閱讀 196評論 3 3
  • Monica:長林君,你會不開心么? 長林君:我好像不知道什么叫不開心。 Monica:那,我想知道,你怎么處理情...
    思辨學(xué)院閱讀 608評論 0 0

友情鏈接更多精彩內(nèi)容