Python實戰(zhàn):爬取租房信息

思路:
  • step 1:爬取單個詳情頁的信息(getInfo(url)函數(shù))
  • step 2:在一個列表頁爬取所有詳情頁的鏈接,再調(diào)用getInfo(url)函數(shù),得到該列表頁中所有詳情頁的信息(onePageInfo(list_url)函數(shù))
  • step 3:通過觀察每個列表頁網(wǎng)址,發(fā)現(xiàn)網(wǎng)址組成規(guī)律,調(diào)用onePageInfo(list_url)爬取信息
難點:

判斷房東性別

結(jié)果展示:
總結(jié):
  1. 房東性別通過房東圖片右下角的小圖片來判斷,小圖片class屬性能區(qū)分男女,存在的問題是有些房東沒設置性別,無法判斷,這里默認為男性。通過字符串format()方法嵌套if-else實現(xiàn)
  2. 發(fā)現(xiàn)得到的address后面跟了\n和一段空格,這里用字符串rstrip()方法去除
  3. 房間圖片的屬性為style,這里用列表切片得到需要信息
  4. 列表推導式:
    urls = ['{}'.format(str(i)) for i in range(1,8)] 正確
    urls = ['{}'.format(str(i) for i in range(1,8))] 錯誤
我的代碼:
frombs4importBeautifulSoup
importrequests
#獲得單個詳情頁的信息
defgetInfo(url):
wb_data = requests.get(url)
soup = BeautifulSoup(wb_data.text,'lxml')
titles = soup.select('body > div.wrap.clearfix.con_bg > div.con_l > div.pho_info > h4 > em')
addresses = soup.select('body > div.wrap.clearfix.con_bg > div.con_l > div.pho_info > p > span')
rentals = soup.select('#pricePart > div.day_l > span')
house_images = soup.select('#imgMouseCusor')
lord_images = soup.select('#floatRightBox > div.js_box.clearfix > div.member_pic > a > img')
lord_names = soup.select('#floatRightBox > div.js_box.clearfix > div.w_240 > h6 > a')
lord_sexs = soup.select('#floatRightBox > div.js_box.clearfix > div.member_pic > div')
fortitle,address,rental,house_image,lord_image,lord_name,lord_sexinzip(titles,addresses,rentals,house_images,lord_images,lord_names,lord_sexs):
data = {
'title': title.get_text(),
'address': address.get_text().rstrip(),
'rental': rental.get_text(),
'house_image': house_image.get('style')[16:-2],
'lord_image': lord_image.get('src'),
'lord_name': lord_name.get_text(),
'lord_sex':"{}".format('female'iflord_sex['class'][0] =="member_ico1"else'male')
}
print(data)
#得到一整頁
defonePageInfo(list_url):
page_list = requests.get(list_url)
page_list_soup = BeautifulSoup(page_list.text,'lxml')
house_list = page_list_soup.select('#page_list > ul > li > a')
'''
house_link = []
for i in house_list:
house_link.append(i['href'])
print(house_link)
'''
foriinhouse_list:
getInfo(i['href'])
urls = ['http://bj.xiaozhu.com/search-duanzufang-p{}-0/'.format(str(i))foriinrange(1,8)]
#urls = ['http://bj.xiaozhu.com/search-duanzufang-p{}-0/'.format(str(i) for i in range(1,8))]錯誤
forurlinurls:
onePageInfo(url)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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