天天看点

A超级简单!用Python爬取租房信息

这里以小猪短租北京区域为例,展示如何爬取租房信息,为北京居住的小伙伴们提供便利的信息比对,找到合适自己的房子,哈哈!!!

A超级简单!用Python爬取租房信息

打开小猪短租的北京区域的页面,从列表页点进第一个详情页,我们需要爬取如下信息:

A超级简单!用Python爬取租房信息

在这里我们需要用到requests,BeautifulSoup两个主要函数,time函数是用来控制访问的频率,设置为两秒钟爬取一次,以免被反扒程序禁止。

我们用一个for循环和格式化的输入语句来爬取前5个列表页的内容:

难点是如何定位到我们需要的元素,比如我们要知道第一个信息的详情页面,需要在页面上右键点击后选择:‘检查’

A超级简单!用Python爬取租房信息

会显示如下的界面,可以看到详情页面的元素是div.result_btm_con.lodgeunitname

我们筛选这个元素是唯一的就可以定位到详情页面的信息,这里可以采用print函数来帮助确认唯一性,其他的类似标题,房东信息,日租金等信息也是这样定位的。

A超级简单!用Python爬取租房信息

例如日租金信息:

A超级简单!用Python爬取租房信息

对应代码如下:

这里我们用到了BeautifulSoup的select函数

值得注意的是我们要构造一个字典,将爬取的放入字典以备分析,这个会在后面的数据分析里面去使用,这里只讲如何爬取信息

完整详细代码如下:

import requests
from bs4 import BeautifulSoup
import time
urls = ['http://bj.xiaozhu.com/search-duanzufang-p{}-0/'.format(str(i)) for i in range(5)]  #抓取前5页信息

def link(urls):
    first_wb_data = requests.get(urls)                          #用requests函数抓取页面
    time.sleep(2)                                               #每隔2秒抓取
    soup = BeautifulSoup(first_wb_data.text,'lxml')             #导入BeautifulSoup读取
    next_url = soup.select('div.result_btm_con.lodgeunitname')  #找到详情页面链接
    for next_url in next_url:
        next_url = next_url.get('detailurl')                    #提取当前列表页面的所有详情页面链接
        get_detail_url(next_url,data=None)                      #调用抓取详情页面内容的函数

def get_detail_url(url,data=None):                              #抓取详情页面内容的函数
    wb_data = requests.get(url)
    soup = BeautifulSoup(wb_data.text, 'lxml')
    title = soup.select('div.con_l > div.pho_info > h4 >em')    #抓取标题
    address = soup.select('div.con_l > div.pho_info > p')       #抓取地址
    price = soup.select('div.day_l > span')                     #抓取价格
    imgs = soup.select('img#curBigImage')                       #抓取图片
    picture = soup.select('div.member_pic > a > img')           #抓取图片
    name = soup.select('a.lorder_name')                         #抓取房东名字
    sex = soup.select('div.w_240 > h6 > span')                  #抓取房东性别

    for title,address,price,imgs,picture,name,sex in zip(title,address,price,imgs,picture,name,sex):   #将爬取的信息放入字典
        data = {
            'title':title.get_text(),
            'address':address.get('title'),
            'price':price.get_text(),
            'imgs':imgs.get('src'),
            'picture':picture.get('src'),
            'name':name.get('title'),
            'sex':sex.get('class'),
        }
        print(data)


for url in urls:
    link(url)
           

爬取完成后的信息如下:

A超级简单!用Python爬取租房信息

希望大家都找到自己心仪的房子,如有不正确的地方请大家指正,轻拍:)