日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一、如何爬取链家网页房源信息

發布時間:2024/3/24 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一、如何爬取链家网页房源信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于個人安裝的Python版本是2.7的,因此此后的相關代碼也是該版本。

  • 爬取網頁所有信息
    利用urllib2包來抓取網頁的信息,先介紹下urllib2包的urlopen函數。
    urlopen:將網頁所有信息存到一個object里,我們可通過讀取這個object來獲得網頁信息。例如,我們使用它來獲取百度首頁信息如下。
import urllib2 f = urllib2.urlopen('http://www.baidu.com') f.read(100)

通過上面的代碼我們讀取了百度首頁的前100個字符:

'<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charse'

有時可能會出現編碼問題導致打開的是亂碼,只需修改下編碼格式即可:

f.read(100).decode('utf-8')

通過這種方法我們可以獲得鏈家一個二手房首頁的信息:

import urllib2 url = 'http://sz.lianjia.com/ershoufang/pg' res = urllib2.urlopen(url) content = res.read().decode('utf-8')

于是網頁信息便存在了content之中。

  • 獲取房源信息
    上面我們已經獲得了一整個的網頁信息,接下來需要獲取網頁中我們需要的有用信息,我們的目標是獲取房源信息,方法是利用正則表達式來獲取。關于正則表達式的知識可以參考一個網友的博文http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html
    首先,我們查看下網頁信息:

    我們關注類似下面的這種信息
data-el="region">萬科第五園一期</a> | 3室2廳 | 104.58平米 | 南 | 精裝</div>< import urllib2 import re url = 'http://sz.lianjia.com/ershoufang/pg/' res = urllib2.urlopen(url) content=res.read().decode('utf-8') result = re.findall(r'>.{1,100}?</div></div><div class="flood">',content) for i in result:print(i[0:-31].decode('utf-8'))

運行結果如下圖:

這樣就算是獲取了我想要的信息了,不過這個信息中間有個我們不想要的符號,接下來還需要去掉這個符號(可見這種方法比較繁瑣,效率也偏低)。
在這里我通過字符替換操作,用空字符來替換這個多余字符。
代碼為:

import urllib2 import re url = 'http://sz.lianjia.com/ershoufang/pg/' res = urllib2.urlopen(url) content=res.read().decode('utf-8') result = re.findall(r'>.{1,100}?</div></div><div class="flood">',content) for i in result:print(i[0:-31].replace('</a>','').decode('utf-8'))


上面的方法雖然幫我們獲得了房源信息,但是方法還是有些繁瑣,而且效率也并不高
我們利用上面的方法來爬取鏈家二手房100個頁面房源信息,代碼修改如下:

import urllib2 import time import re print(time.clock()) url = 'http://sz.lianjia.com/ershoufang/pg' for x in range(101):finalUrl = url + str(x) + '/'res = urllib2.urlopen(finalUrl)content=res.read().decode('utf-8')result = re.findall(r'>.{1,100}?</div></div><div class="flood">',content)for i in result:print(i[0:-31].replace('</a>','').decode('utf-8')) print(time.clock())

主要是測試一下運行時間,測試結果大概是350s左右(當然,主要還受網速的影響,而對代碼本身來說消耗的大多數時間都在urlopen上),接下來,在下一篇中,將利用BeautifulSoup庫來實現房源的獲取。

總結

以上是生活随笔為你收集整理的一、如何爬取链家网页房源信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。