利用python爬取我愛我家租賃房源資訊
主要思路:
1.通過get方法向伺服器提交head檔案和cookie資訊(通過在chrome網頁上面登入之後獲取,避免了通過賬號密碼模擬登陸的繁瑣過程),實現模擬登陸的效果
2.訪問網頁,通過萬能的正則匹配到所需要的資訊
具體演算法有3步驟:
1.從租賃房源的第一頁至第100頁get網頁資訊,每頁對應的url為:url_1='http://bj.5i5j.com/rent/n%d',獲取每個網頁裡面的房源編號;2.通過每個房源的房源編號進入該房源介面,爬取該房源的'價格','戶型','面積','朝向','樓層','小區名稱'資訊
3.將爬取的房源資訊儲存在5i5j_house_info.xlsx下
待完善:
1.由於訪問每個網頁會花費很長時間的io開銷,後期會將房源編號放在佇列中,通過佇列鎖+多執行緒提高爬蟲速度
2.我愛我家沒有反爬蟲機制,如遇到反爬蟲可以採用代理ip,多瀏覽器,多賬號等進行爬蟲
結果如下:
具體程式碼如下:
#get_525j_house_info import requests import json import time import urllib.request from win32.win32crypt import CryptUnprotectData from urllib import parse import re url_1='http://bj.5i5j.com/rent/n%d' #標頭檔案資訊,可用於模擬登陸 httphead=''' Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding:gzip, deflate Accept-Language:zh-CN,zh;q=0.8 Cache-Control:max-age=0 Connection:keep-alive Cookie:suid=8715039984; BIGipServer=3647539722.20480.0000; PHPSESSID=a2a4l07dfeejokb2k2u1hgt7c6; yfx_c_g_u_id_10000001=_ck17101612002011032445773465255; renthistorys=%5B%7B%22id%22%3A%22166475545%22%2C%22imgurl%22%3A%22house%5C%2F3768%5C%2F37688980%5C%2Fshinei%5C%2Ffadhfope9b890c26.jpg%22%2C%22housetitle%22%3A%22%5Cu7802%5Cu8f6e%5Cu5382%5Cu5bbf%5Cu820d+2%5Cu5ba41%5Cu53851%5Cu536b%22%2C%22parentareaname%22%3A%22%5Cu6e05%5Cu6cb3%22%2C%22buildarea%22%3A%2263.85%22%2C%22hallhouse%22%3A%222%5Cu5ba41%5Cu5385%22%2C%22districtname%22%3A%22%5Cu6d77%5Cu6dc0%22%2C%22conmmunityname%22%3A%22%5Cu7802%5Cu8f6e%5Cu5382%5Cu5bbf%5Cu820d%22%2C%22price%22%3A%222200%22%2C%22onePrice%22%3A344558%7D%2C%7B%22id%22%3A%22166968941%22%2C%22imgurl%22%3A%22house%5C%2F3741%5C%2F37414743%5C%2Fshinei%5C%2Fnhecpeho0a3e23b4.jpg%22%2C%22housetitle%22%3A%22%5Cu8d22%5Cu5927%5Cu5bb6%5Cu5c5e%5Cu9662+2%5Cu5ba41%5Cu53851%5Cu536b%22%2C%22parentareaname%22%3A%22%5Cu4e0a%5Cu5730%22%2C%22buildarea%22%3A%2210%22%2C%22hallhouse%22%3A%222%5Cu5ba41%5Cu5385%22%2C%22districtname%22%3A%22%5Cu6d77%5Cu6dc0%22%2C%22conmmunityname%22%3A%22%5Cu8d22%5Cu5927%5Cu5bb6%5Cu5c5e%5Cu9662%22%2C%22price%22%3A%222000%22%2C%22onePrice%22%3A2000000%7D%2C%7B%22id%22%3A%22171185475%22%2C%22imgurl%22%3Anull%2C%22housetitle%22%3A%22%5Cu6c38%5Cu65fa%5Cu5bb6%5Cu56ed+2%5Cu5ba41%5Cu53851%5Cu536b%22%2C%22parentareaname%22%3A%22%5Cu4e0a%5Cu5730%22%2C%22buildarea%22%3A%2230%22%2C%22hallhouse%22%3A%222%5Cu5ba41%5Cu5385%22%2C%22districtname%22%3A%22%5Cu6d77%5Cu6dc0%22%2C%22conmmunityname%22%3A%22%5Cu6c38%5Cu65fa%5Cu5bb6%5Cu56ed%22%2C%22price%22%3A%221600%22%2C%22onePrice%22%3A533333%7D%2C%7B%22id%22%3A%22166983380%22%2C%22imgurl%22%3A%22house%5C%2F3772%5C%2F37726408%5C%2Fshinei%5C%2Foahhomjoe708d412.jpg%22%2C%22housetitle%22%3A%22%5Cu767e%5Cu65fa%5Cu5bb6%5Cu82d1+4%5Cu5ba41%5Cu53852%5Cu536b%22%2C%22parentareaname%22%3A%22%5Cu4e0a%5Cu5730%22%2C%22buildarea%22%3A%22140%22%2C%22hallhouse%22%3A%224%5Cu5ba41%5Cu5385%22%2C%22districtname%22%3A%22%5Cu6d77%5Cu6dc0%22%2C%22conmmunityname%22%3A%22%5Cu767e%5Cu65fa%5Cu5bb6%5Cu82d1%22%2C%22price%22%3A%222000%22%2C%22onePrice%22%3A142857%7D%5D; searchHistorys=%5B%7B%22name%22%3A%22%5Cu6d77%5Cu6dc0%22%2C%22spell%22%3A%22haidian%22%2C%22level%22%3A3%2C%22id%22%3A%225%22%7D%2C%7B%22name%22%3A%22nanwu%22%2C%22spell%22%3A%22%22%2C%22level%22%3A1%2C%22id%22%3A%22%22%7D%2C%7B%22name%22%3A%22%5Cu4e0a%5Cu5730%22%2C%22spell%22%3A%22shangdi%22%2C%22level%22%3A4%2C%22id%22%3A%2236854%22%7D%5D; yfx_f_l_v_t_10000001=f_t_1508126420098__r_t_1509969433602__v_t_1509969433602__r_c_1; __utmt=1; __utmt_t2=1; _va_ref=%5B%22%E5%93%81%E4%B8%93%E6%A0%87%E9%A2%98%22%2C%22%E5%93%81%E4%B8%93%E6%A0%87%E9%A2%98%22%2C1509969435%2C%22http%3A%2F%2Fbzclk.baidu.com%2Fadrc.php%3Ft%3D06KL00c00f7SfKC0mn7m0KFRQ00NH6Kp00000F9_U7b000000TGQTM.THYdpHNJcQMuVeLPSPyS0A3qmh7GuZR0T1dhuyN9P1mkn10snjubuywW0ZRqPWD1wHbznHcdnb7KfW0sn16zwW04PWbsn1wAwHRsrHn0mHdL5iuVmv-b5Hnsn1TvnWcvn1fhTZFEuA-b5HDv0ARqpZwYTjCEQvFJQWNGPyC8mvqVQ1qdIAdxTvqdThP-5yF9pywdFMNYUNqVuywGIyYqTZKlTiudIAdxIANzUHY-uHR-rHn-rjD-uHf-mW6-rHn-uHm-mH0-rjT-uHb-mHc-rH6hIgwVgvPEUMw-UMfqFyRdFHb1FH6kFyRYFyc3FHb1FyRvFyDsFH6LFyR4FyDzFHb3FMNYUNqWmydsmy-MUWY-uHR-rHn-rjD-uHf-mW6-rHn-uHm-mH0-rjT-uHb-mHc-rH6hUAVdUHYzPsKWThnqnHDvn1T%26tpl%3Dtpl_10144_15654_11145%26l%3D1500277912%26attach%3Dlocation%3D%26linkName%3D%25E6%25A0%2587%25E9%25A2%2598%26linkText%3D%25E6%2588%2591%25E7%2588%25B1%25E6%2588%2591%25E5%25AE%25B6%25EF%25BC%258C%25E5%2585%25A8%25E5%25BF%2583%25E5%2585%25A8%25E6%2584%258F%25E6%2589%25BE%25E6%2588%25BF%25EF%25BC%258C%25E7%259C%259F%25E5%25BF%2583%25E5%25AE%259E%25E6%2584%258F%26xp%3Did(%2522m501af8ab%2522)%252FDIV%255B1%255D%252FDIV%255B1%255D%252FDIV%255B1%255D%252FDIV%255B1%255D%252FH2%255B1%255D%252FA%255B1%255D%26linkType%3D%26checksum%3D211%26ie%3Dutf-8%26f%3D3%26tn%3Dbaidu%26wd%3D5i5j%20%E5%AE%98%E6%96%B9%E7%BD%91%E7%AB%99%26oq%3D525j%26rqlang%3Dcn%26inputT%3D8167%26rsp%3D0%22%5D; __utma=1.68281274.1508126420.1508130935.1509969435.3; __utmb=1.5.10.1509969435; __utmc=1; __utmz=1.1509969435.3.3.utmcsr=baidu|utmccn=%E5%93%81%E4%B8%93%E6%A0%87%E9%A2%98|utmcmd=ppzq|utmctr=%E5%93%81%E4%B8%93%E6%A0%87%E9%A2%98|utmcct=%E5%93%81%E4%B8%93%E6%A0%87%E9%A2%98; __utma=228451417.694811314.1508126420.1508130935.1509969435.3; __utmb=228451417.5.10.1509969435; __utmc=228451417; __utmz=228451417.1509969435.3.3.utmcsr=baidu|utmccn=%E5%93%81%E4%B8%93%E6%A0%87%E9%A2%98|utmcmd=ppzq|utmctr=%E5%93%81%E4%B8%93%E6%A0%87%E9%A2%98|utmcct=%E5%93%81%E4%B8%93%E6%A0%87%E9%A2%98; _va_id=9086dafceef2e930.1508126421.3.1509969793.1509969435.; _va_ses=*; Hm_lvt_0bccd3f0d70c2d02eb727b5add099013=1508126420,1508130935,1509969434; Hm_lpvt_0bccd3f0d70c2d02eb727b5add099013=1509969793; Hm_lvt_fbfca6a323fa396dde12616e37bc1df9=1508126420,1508130935,1509969434; Hm_lpvt_fbfca6a323fa396dde12616e37bc1df9=1509969793; Hm_lvt_b3ad53a84ea4279d8124cc28d3c3220f=1508126420,1508130935,1509969434; Hm_lpvt_b3ad53a84ea4279d8124cc28d3c3220f=1509969793; _pzfxuvpc=1508126420423%7C1062778321885559810%7C33%7C1509969793161%7C3%7C7558331484128782074%7C4424313154138490995; _pzfxsvpc=4424313154138490995%7C1509969434144%7C5%7Chttp%3A%2F%2Fbzclk.baidu.com%2Fadrc.php%3Ft%3D06KL00c00f7SfKC0mn7m0KFRQ00NH6Kp00000F9_U7b000000TGQTM.THYdpHNJcQMuVeLPSPyS0A3qmh7GuZR0T1dhuyN9P1mkn10snjubuywW0ZRqPWD1wHbznHcdnb7KfW0sn16zwW04PWbsn1wAwHRsrHn0mHdL5iuVmv-b5Hnsn1TvnWcvn1fhTZFEuA-b5HDv0ARqpZwYTjCEQvFJQWNGPyC8mvqVQ1qdIAdxTvqdThP-5yF9pywdFMNYUNqVuywGIyYqTZKlTiudIAdxIANzUHY-uHR-rHn-rjD-uHf-mW6-rHn-uHm-mH0-rjT-uHb-mHc-rH6hIgwVgvPEUMw-UMfqFyRdFHb1FH6kFyRYFyc3FHb1FyRvFyDsFH6LFyR4FyDzFHb3FMNYUNqWmydsmy-MUWY-uHR-rHn-rjD-uHf-mW6-rHn-uHm-mH0-rjT-uHb-mHc-rH6hUAVdUHYzPsKWThnqnHDvn1T%26tpl%3Dtpl_10144_15654_11145%26l%3D1500277912%26attach%3Dlocation%253D%2526linkName%253D%2525E6%2525A0%252587%2525E9%2525A2%252598%2526linkText%253D%2525E6%252588%252591%2525E7%252588%2525B1%2525E6%252588%252591%2525E5%2525AE%2525B6%2525EF%2525BC%25258C%2525E5%252585%2525A8%2525E5%2525BF%252583%2525E5%252585%2525A8%2525E6%252584%25258F%2525E6%252589%2525BE%2525E6%252588%2525BF%2525EF%2525BC%25258C%2525E7%25259C%25259F%2525E5%2525BF%252583%2525E5%2525AE%25259E%2525E6%252584%25258F%2526xp%253Did(%252522m501af8ab%252522)%25252FDIV%25255B1%25255D%25252FDIV%25255B1%25255D%25252FDIV%25255B1%25255D%25252FDIV%25255B1%25255D%25252FH2%25255B1%25255D%25252FA%25255B1%25255D%2526linkType%253D%2526checksum%253D211%26ie%3Dutf-8%26f%3D3%26tn%3Dbaidu%26wd%3D5i5j%2520%25E5%25AE%2598%25E6%2596%25B9%25E7%25BD%2591%25E7%25AB%2599%26oq%3D525j%26rqlang%3Dcn%26inputT%3D8167%26rsp%3D0; Hm_lvt_407473d433e871de861cf818aa1405a1=1508126427,1508130941,1509969440; Hm_lpvt_407473d433e871de861cf818aa1405a1=1509969798; domain=bj Host:bj.5i5j.com Referer:http://bj.5i5j.com/rent Upgrade-Insecure-Requests:1 User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36 ''' #獲取head和cookies def get_head_cookies(httphead): head={} for i in httphead.strip().split('\n'): if re.match('Referer',i): head['Referer']=i[len('Referer'):] continue line=i.strip().split(':') head[line[0]]=line[1] cookie=head['Cookie'] cookies={} for i in cookie.strip().split(';'): line=i.strip().split('=') cookies[line[0]]=line[1] return head,cookies head,cookies=get_head_cookies(httphead) #獲取房源id house_id='<a href="/rent/([\d]{9})"' def get_house_ids(url): return set(re.findall(house_id,requests.get(url=url,headers=head,cookies=cookies).content.decode('utf-8'))) house_ids=set() page_url_error=[] for i in range(1,10): try: house_ids.update(get_house_ids(url_1%(i))) except: page_url_error.append(i) #對於每個房源進行爬取資訊 house_inf='''<ul class="house-info">.+?"font-price">([\d|\.]+?)</span> 元/月.+?<b>戶型:</b>(.+?)&.+?<b>面積:</b>(.+?)</li>.+?<b>朝向:</b>(.+?)</li>.+?<b>樓層:</b>(.+?)</li>.+?<b>小區:</b>(.+?)\s+.+?</li>.+?</ul>''' def get_house_inf(house_id): return re.findall(house_inf,requests.get(url='http://bj.5i5j.com/rent/'+house_id,headers=head,cookies=cookies).content.decode('utf-8'),re.S|re.M)[0] from openpyxl import Workbook file='F:\\臨時工作\\1023\\5i5j_house_info.xlsx' wb_bj=Workbook() ws_bj=wb_bj.worksheets[0] ws_bj.title='房源資訊表' #獲取資訊類似於('6800', '2室1廳1衛', '50.45平米', '南', '中部/13層', '崇文門西大街') line_1=['價格','戶型','面積','朝向','樓層','小區名稱'] ws_bj.append(line_1) house_id_error=[] for house_id in house_ids: try: ws_bj.append(get_house_inf(house_id)) except: house_id_error.append(house_id) wb_bj.save(file) #輸出出錯對應的網頁url和戶型id print(page_url_error,house_id_error)
相關推薦
利用python爬取我愛我家租賃房源資訊
主要思路: 1.通過get方法向伺服器提交head檔案和cookie資訊(通過在chrome網頁上面登入之後獲取,避免了通過賬號密碼模擬登陸的繁瑣過程),實現模擬登陸的效果 2.訪問網頁,通過萬能的正則匹配到所需要的資訊 具體演算法有3步驟: 1.從租賃房源的第一頁至第10
利用BeautifulSoup爬取我愛我家的租房資料
因為之前對BeautifulSoup一直不是很熟悉,剛好身邊的朋友同事在找房子,就想著能不能自己寫個爬蟲爬一下資料,因此就寫了這個爬蟲。基本都是邊看書邊寫的,不過也沒什麼好講的。直接粘程式碼了。
利用python爬取IP地址歸屬地等資訊!
import requests url = "http://m.ip138.com/ip.asp?ip=" try: r = requests.get(url + '202.204.80.112') r.raise_for_status()
利用Python爬取幾百萬github數據!這些源碼都是我的囊中之物!
.py .com exchange 非阻塞 問題 判斷 recursion 異步調用 direct 進群:548377875 即可獲取數十套PDF哦! 看到這麽簡單的流程,內心的第一想法就是先簡單的寫一個遞歸實現唄,要是性能差再慢慢優化,所以第一
利用python爬取龍虎榜數據及後續分析
登錄 one 可能 股市 .com 爬蟲 但我 由於 相關 ##之前已經有很多人寫過相關內容,但我之前並未閱讀過,這個爬蟲也是按照自己的思路寫的,可能比較醜陋,請見諒! 本人作為Python爬蟲新手和股市韭菜,由於時間原因每晚沒辦法一個個翻龍虎榜數據,所以希望借助爬蟲篩選出
利用python爬取點小圖片,滿足私欲(爬蟲)
.text write ret append jpg use download div pat import requestsimport reimport os,syslinks=[]titles=[] headers = { "User-Agent": "Mozi
利用python爬取糗事百科的用戶及段子
我們 什麽 roo urlopen gen 文件 addheader find 正則匹配 最近正在學習python爬蟲,爬蟲可以做很多有趣的事,本文利用python爬蟲來爬取糗事百科的用戶以及段子,我們需要利用python獲取糗事百科一個頁面的用戶以及段子,就需要匹配兩次,
利用Python爬取可用的代理IP
strip() color 地址 read main urn try exc head 前言 就以最近發現的一個免費代理IP網站為例:http://www.xicidaili.com/nn/。在使用的時候發現很多IP都用不了。 所以用Python寫了個腳本,該腳本可以把能用
Python爬蟲案例:利用Python爬取笑話網
htm 分享 targe pen 技術分享 搞笑 lan tle import 學校的服務器可以上外網了,所以打算寫一個自動爬取笑話並發到bbs的東西,從網上搜了一個笑話網站,感覺大部分還不太冷,html結構如下: 可以看到,笑話的鏈接列表都在<div cla
沒有內涵段子可以刷了,利用Python爬取段友之家貼吧圖片和小視頻(含源碼)
python 興趣 爬蟲 職業 由於最新的視頻整頓風波,內涵段子APP被迫關閉,廣大段友無家可歸,但是最近發現了一個“段友”的app,版本更新也挺快,正在號召廣大段友回家,如下圖,有興趣的可以下載看看(ps:我不是打廣告的,沒收廣告費的) 同時,之前同事也發了一個貼吧的段子聚居地,客官稍等,馬
今天你教高考生一個裝逼神技!利用Python爬取歷年高考成績!
mongo tle one 展示 com .text color rep mon 2.爬取數據 1.獲取各省的分數線信息 獲取各省份的鏈接: # 獲取分數線 def get_score(url): web_data = requests.get(url, hea
最後輕松一夏,周末利用python爬取“陳翔六點半”搞笑視頻!
多看 獲取數據 也會 程序員 copy 是什麽 查看 ima 周末 覺得程序員再忙也需要給自己安排一點娛樂時間,對自己好點,自己對自己不好,誰會? 自己娛樂一般會有:跑步、看電影、小視頻,而小視頻是最家常的娛樂方式,看得最多的小視頻是「 陳翔六點半 」,咦! 拍得搞笑
利用Python爬取500萬以上的國產自拍小電影哦!
宣告:本專案旨在學習Scrapy爬蟲框架和MongoDB資料庫,不可使用於商業和個人其他意圖。若使用不當,均由個人承擔。 PornHubBot PornHubBot專案主要是爬取全球最大的小電影網站PornHub的視訊標題、時長、mp4連結、封
利用Python爬取了1600個崗位!原來一個程式設計師的年薪可以這麼高!
Python學了這麼久,相信很多小夥伴都想知道錢途如何,全國各大城市招聘Python的崗位有多少,都招哪些職位,年薪如何等等,我爬取了拉勾近1600個Python相關的職位,我們用資料說話! 進群:548377875 即可獲取數十套PDF哦! &nb
利用python爬取yapi後臺介面
解決的問題:檢測公司釋出系統之中,遺漏的介面路徑地址。 採取的方法:爬取yapi管理後臺,爬取所有的介面路徑,同時檢測這個path路徑是否在釋出系統之中(如果不在釋出系統之後,通過域名訪問,會提示沒有許可權) 好了瞭解了背景之後 我就開始開工了。 一、瞭解yapi 在
利用python爬取mobike在西安地區的分佈情況
先附上整個思路流程 1,獲取mobike單車的API介面 2,爬取API資料 3,資料視覺化 一:利用Fiddle抓取mobileAPI資料介面得到post請求如下 POST https://mwx.mobike.com/nearby/nearbyBikeInf
利用Python爬取攝影網站圖片,切勿商用
今天我們繼續爬取一個網站,這個網站為 http://image.fengniao.com/ ,蜂鳥一個攝影大牛聚集的地方,本教程請用來學習,不要用於商業目的,不出意外,蜂鳥是有版權保護的網站。 Python學習資料或者需要程式碼、視訊加Python學習群:9604104
利用Python爬取B站攝影欄目的圖片
Python中可以用作爬蟲的庫有兩個,一個是urllib,一個是request,推薦使用後一種,這才是給人類使用的爬蟲庫,上手十分簡單! request庫使用教程 話說回來,B站中由專門下載圖片的API,因此爬取圖片還是比較方便的,找到你喜歡的攝影照片的id,加在URL("https://a
利用Python爬取房產資料!並在地圖上顯示!Python乃蒂花之秀!
JiwuspiderSpider.py # -*- coding: utf-8 -*- from scrapy import Spider,Request import re from jiwu.items import JiwuItem clas
Python爬蟲系列之四:利用Python爬取PyODPS頁面並整合成PDF文件
文章架構 開發場景 在日常開發過程中, 經常需要參考一些文件。對於線上文件,往往由於網速等原因,用起來總不是那麼(ma)順(fan)心。 開發工具 Anaconda Python 2 實現方案 基於 bs4 模組標籤解析 爬取