色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

記一次python 爬蟲爬取深圳租房信息的過程及遇到的問題

瀏覽:72日期:2022-07-04 14:54:39

為了分析深圳市所有長租、短租公寓的信息,爬取了某租房公寓網站上深圳區域所有在租公寓信息,以下記錄了爬取過程以及爬取過程中遇到的問題:

爬取代碼:

import requestsfrom requests.exceptions import RequestExceptionfrom pyquery import PyQuery as pqfrom bs4 import BeautifulSoupimport pymongofrom config import *from multiprocessing import Poolclient = pymongo.MongoClient(MONGO_URL) # 申明連接對象db = client[MONGO_DB] # 申明數據庫def get_one_page_html(url): # 獲取網站每一頁的html headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/85.0.4183.121 Safari/537.36' } try: response = requests.get(url, headers=headers) if response.status_code == 200: return response.text else: return None except RequestException: return Nonedef get_room_url(html): # 獲取當前頁面上所有room_info的url doc = pq(html) room_urls = doc(’.r_lbx .r_lbx_cen .r_lbx_cena a’).items() return room_urlsdef parser_room_page(room_html): soup = BeautifulSoup(room_html, ’lxml’) title = soup.h1.text price = soup.find(’div’, {’class’: ’room-price-sale’}).text[:-3] x = soup.find_all(’div’, {’class’: ’room-list’}) area = x[0].text[7:-11] # 面積 bianhao = x[1].text[4:] house_type = x[2].text.strip()[3:7] # 戶型 floor = x[5].text[4:-2] # 樓層 location1 = x[6].find_all(’a’)[0].text # 分區 location2 = x[6].find_all(’a’)[1].text location3 = x[6].find_all(’a’)[2].text subway = x[7].text[4:] addition = soup.find_all(’div’, {’class’: ’room-title’})[0].text yield { ’title’: title, ’price’: price, ’area’: area, ’bianhao’: bianhao, ’house_type’: house_type, ’floor’: floor, ’location1’: location1, ’location2’: location2, ’location3’: location3, ’subway’: subway, ’addition’: addition }def save_to_mongo(result): if db[MONGO_TABLE].insert_one(result): print(’存儲到mongodb成功’, result) return True return Falsedef main(page): url = ’http://www.xxxxx.com/room/sz?page=’ + str(page) # url就不粘啦,嘻嘻 html = get_one_page_html(url) room_urls = get_room_url(html) for room_url in room_urls: room_url_href = room_url.attr(’href’) room_html = get_one_page_html(room_url_href) if room_html is None: # 非常重要,否則room_html為None時會報錯 pass else: results = parser_room_page(room_html) for result in results:save_to_mongo(result)if __name__ == ’__main__’: pool = Pool() # 使用多進程提高爬取效率 pool.map(main, [i for i in range(1, 258)])

在寫爬取代碼過程中遇到了兩個問題:

(一)在get_room_url(html)函數中,開始是想直接return每個租房信息的room_url,但是return不同于print,函數運行到return時就會結束該函數,這樣就只能返回每頁第一個租房room_url。解決辦法是:return 包含每頁所有room_url的generator生成器,在main函數中用for循環遍歷,再從每個room_url中獲取href,傳入到get_one_page_html(room_url_href)中進行解析。

(二)沒有寫第76行的if語句,我默認get_one_page_html(room_url_href)返回的room_html不為空,因此出現multiprocessing.pool.RemoteTraceback報錯:

記一次python 爬蟲爬取深圳租房信息的過程及遇到的問題

上圖中顯示markup為None情況下報錯,點擊藍色'F:ProgramFilesanaconda3libsite-packagesbs4__init__.py'發現markup為room_html,即部分room_html出現None情況。要解決這個問題,必須讓代碼跳過room_html is None的情況,因此添加 if 語句解決了這個問題。

最終成功爬取某租房公寓深圳市258頁共4755條租房信息,為下一步進行數據分析做準備。

記一次python 爬蟲爬取深圳租房信息的過程及遇到的問題

其中單條信息:

記一次python 爬蟲爬取深圳租房信息的過程及遇到的問題

以上就是記一次python 爬蟲爬取深圳租房信息的過程及遇到的問題的詳細內容,更多關于python 爬蟲的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 日韩在线国产精品 | 武松大战潘金莲三级在线 | 国产愉拍精品手机 | 亚洲免费美女视频 | 奇米网狠狠干 | 91久久综合 | 国产成人免费影片在线观看 | 欧美激情一区二区三区高清视频 | 黄色视屏免费 | 久草中文网 | 成人免费在线视频 | 毛片免费观看的视频在线 | 亚洲男人的性天堂 | 久草在在线视频免费 | 国产深夜福利视频网站在线观看 | av人摸人人人澡人人超碰 | 99热免费 | 波多野结衣一区二区 三区 波多野结衣一区二区三区88 | 理论片免费午夜 | 91久热| 免费播放巨茎人妖不卡片 | 国产片91人成在线观看 | 亚洲天堂国产精品 | 成年片免费网址网站 | 午夜影院免费体验 | 国产日本欧美在线观看 | 亚洲 欧美 精品 中文第三 | 性欧美精品 | 成人精品一区二区三区 | 免费国产黄网站在线观看视频 | 久久久黄色片 | 国产欧美日本在线 | 色一情| 久久亚洲成a人片 | 最新国产美女肝交视频播放 | 手机在线免费毛片 | 亚洲成aⅴ人片在线观 | 亚洲国产一区二区三区在线观看 | 日韩视频在线观看一区 | 精品一久久香蕉国产线看观 | 怡红院在线视频观看 |