python学习:爬取房源信息


    最近挤时间了解了一下python。“纸上谈兵终觉浅 绝知此事要躬行”,只有实际操作才能加深印象。这里参考这篇:https://www.cnblogs.com/gkf0103/p/7689600.html 进行实际操作并进行部分修改。记录一下。

from bs4 import BeautifulSoup       #beautifulsoup4库使用时是简写的bs4
import requests


header={  
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36'  
}

def get_page(url):
    try:
#        url = 'https://weifang.anjuke.com/sale/'

        #reponse = requests.get(url, timeout = 30)
        response = requests.get(url, timeout = 30, headers=header)
        
        # 如果状态码不是200 则应发HTTOError异常
        response.raise_for_status()
        # 设置正确的编码方式
        response.encoding = response.apparent_encoding
        
        soup = BeautifulSoup(response.text, 'html.parser')
        
        #当前页房源链接爬取
        result_li = soup.find_all('li', {'class': 'list-item'})
        # 下一页的爬取
        result_next_page = soup.find_all('a', {'class': 'aNxt'})
        
        j = 0
        #处理当前页面房源链接
        for i in result_li:
            
#            这里每个列表页只处理前4个房源链接,是为了家加快调试
            j = j + 1
            if j > 4:
                break
            
            print('-------------------------------')
            # 由于BeautifulSoup传入的必须为字符串,所以进行转换
            page_url = str(i)
            soup = BeautifulSoup(page_url, 'html.parser')
            
            # 由于通过class解析的为一个列表,所以只需要第一个参数
        #    result_href = soup.find_all('a', {'class': 'houseListTitle'})
        #    print(result_href)   
        #    print('**************')
            result_href = soup.find_all('a', {'class': 'houseListTitle'})[0]

#            print(result_href.attrs['href'])
            get_page_detail(result_href.attrs['href'])
    
        
        #处理下一页链接
        print('+++++++++++++++++++++++++++++')
        if len(result_next_page) != 0:
            print(result_next_page[0].attrs['href'])
        # 函数进行递归
            get_page(result_next_page[0].attrs['href'])            
        else:
            print('没有下一页了')
        
      
#        return response.text
    except:
        return '产生异常!'


#进行字符串中空格,换行,tab键的替换及删除字符串两边的空格删除 
def my_strip(s):
    return str(s).replace(" ", "").replace("\n", "").replace("\t", "").strip()
#由于频繁进行BeautifulSoup的使用,封装一下
def my_Beautifulsoup(response):
    return BeautifulSoup(str(response), 'html.parser')

# 详细页面的爬取
def get_page_detail(url):
    response = requests.get(url, headers=header)

    if response.status_code == 200:
        soup = BeautifulSoup(response.text, 'html.parser')
        
        # 标题
        result_title = soup.find_all('h3', {'class': 'long-title'})[0]
        #编码与发布日期
        result_date = soup.find_all('span', {'class': 'house-encode'})[0]
        print('标题:', my_strip(result_title.text))
        print('编码与发布日期:', my_strip(result_date.text))

        #第一列-----------------------------------
        result_house_1 = soup.find_all('div', {'class': 'first-col detail-col'})
        soup_1 = my_Beautifulsoup(result_house_1)
        #处理类似表格这种数据,每列包含好多行,感觉用这种方式比较方便
        result_xiaoqu = soup_1.find_all('dd')[0]
        print('所属小区:', my_strip(result_xiaoqu.text))

        result_weizhi_a = soup_1.find_all('dd')[1]
        result_weizhi_b = result_weizhi_a.find_all('p', {'class': 'loc-text'})[0]
        print('所在位置:', my_strip(result_weizhi_b.text))        
 
        result_year = soup_1.find_all('dd')[2]
        print('建造年代:', my_strip(result_year.text))     
        
        result_type = soup_1.find_all('dd')[3]
        print('房屋类型:', my_strip(result_type.text))  
        
        #第三列-----------------------------------
        result_house_3 = soup.find_all('div', {'class': 'third-col detail-col'})
        soup_3 = my_Beautifulsoup(result_house_3)
        
        result_danjia = soup_3.find_all('dd')[0]
        print('单价:', my_strip(result_danjia.text))        
        
# =============================================================================
# #        小区
# #        result_xiaoqu = soup.find_all('a', {'_soj': 'propview'})[0]
# #        所在位置
# #        result_weizhi = soup.find_all('a', {'_soj': 'propview'})[0]
# #        小区
# #        result_weizhi1 = soup.find_all('a', {'_soj': 'propview'})[1]
# #        result_weizhi2 = soup.find_all('a', {'_soj': 'propview'})[2]
#         result_weizhitext = soup.find_all('p', {'class': 'loc-text'})[0]
# #        print('小区:', my_strip(result_xiaoqu.text))
# #        print('位置:', my_strip(result_weizhi1.text), my_strip(result_weizhi2.text), my_strip(result_weizhitext.text))
#         print('位置:', my_strip(result_weizhitext.text))
#        
# #        建造年代
#         result_year = soup.find_all('h3', {'class': 'long-title'})[0]
#         
# 
#         print('建造年代:')
#         print('房屋类型:')
# =============================================================================
        
    
get_page('https://beijing.anjuke.com/sale/')  

    读取的结果:

-------------------------------
标题: 王.府公寓独栋新装修报价1300万看房提前约一套
编码与发布日期: 房屋编码:1299230152,发布时间:2018年06月27日
所属小区: 王府园中园
所在位置: 昌平-北七家-北清路
建造年代: 2007年
房屋类型: 别墅
单价: 60185元/m²
-------------------------------
标题: 紫芳园三区观景三居室,单价低,采光好,落地窗,环境优美
编码与发布日期: 房屋编码:1300843076,发布时间:2018年06月28日
所属小区: 紫芳园三区
所在位置: 丰台-方庄-紫芳路
建造年代: 2008年
房屋类型: 普通住宅
单价: 76884元/m²
-------------------------------
标题: (优选)北京周边路劲阳光城一手房,五证齐全南北三居外地人可买
编码与发布日期: 房屋编码:1289332464,发布时间:2018年06月20日
所属小区: 燕达首尔国际村
所在位置: 北京周边-燕郊-燕顺路,近京秦高速
建造年代: 2015年
房屋类型: 普通住宅
单价: 15744元/m²
-------------------------------
标题: 三真新出新出东方瑞景南北通透金角位户型方正
编码与发布日期: 房屋编码:1283402682,发布时间:2018年06月15日
所属小区: 东方瑞景
所在位置: 朝阳-建国门外-建国门外大街16号
建造年代: 2004年
房屋类型: 普通住宅
单价: 80808元/m²
+++++++++++++++++++++++++++++
https://beijing.anjuke.com/sale/p37/#filtersort
-------------------------------
标题: 富力又一城新上房源全明格局南北通透双卫大两居
编码与发布日期: 房屋编码:1280645118,发布时间:2018年06月13日
所属小区: 富力又一城B区
所在位置: 朝阳-豆各庄-大鲁店北路
建造年代: 2007年
房屋类型: 普通住宅
单价: 49132元/m²
-------------------------------
标题: 九州新上正规H户型大两居精装修低总价低楼层全天采光
编码与发布日期: 房屋编码:1296682568,发布时间:2018年06月25日
所属小区: 育新花园南里
所在位置: 大兴-大兴区其他-育仁街1号
建造年代: 2012年
房屋类型: 普通住宅
单价: 23636元/m²
-------------------------------
标题: 税费少金融街花园式小区西城晶华精装修两居室出售
编码与发布日期: 房屋编码:1288739542,发布时间:2018年06月19日
所属小区: 西城晶华
所在位置: 西城-金融街-太平桥大街8号
建造年代: 2008年
房屋类型: 公寓
单价: 161458元/m²
-------------------------------
标题: 西一区假南北三居两居价格买三居明厨明卫有钥匙欢迎品鉴
编码与发布日期: 房屋编码:1239451019,发布时间:2018年05月19日
所属小区: 天通苑西一区
所在位置: 昌平-天通苑-立汤路
建造年代: 2001年
房屋类型: 普通住宅
单价: 36048元/m²
+++++++++++++++++++++++++++++
https://beijing.anjuke.com/sale/p38/#filtersort
-------------------------------
标题: CBD核心区精致两居一梯两户公摊小通风好房本满五年
编码与发布日期: 房屋编码:1208556407,发布时间:2018年04月30日
所属小区: 中上园5号院
所在位置: 通州-新华大街-上香胡同
建造年代: 2001年
房屋类型: 普通住宅
单价: 50142元/m²
-------------------------------
标题: 永定门华龙美晟2010年三居室满五年一套商品房看房随时
编码与发布日期: 房屋编码:1304421878,发布时间:2018年06月30日
所属小区: 华龙美晟
所在位置: 东城-永定门-沙子口路甲48号
建造年代: 2010年
房屋类型: 普通住宅
单价: 76594元/m²
-------------------------------
标题: C21星河湾畅园顶层挑高南北通透给周期双卧朝南八角窗
编码与发布日期: 房屋编码:1248218072,发布时间:2018年05月23日
所属小区: 畅园(星河湾)
所在位置: 朝阳-朝青-四季星河中街2号
建造年代: 2008年
房屋类型: 普通住宅
单价: 90614元/m²
-------------------------------
标题: 富力尚悦居精装两居西南朝向朝小区随时看房
编码与发布日期: 房屋编码:1290157217,发布时间:2018年06月20日
所属小区: 富力尚悦居
所在位置: 通州-马驹桥-兴贸二街
建造年代: 2015年
房屋类型: 普通住宅
单价: 39411元/m²
+++++++++++++++++++++++++++++
https://beijing.anjuke.com/sale/p39/#filtersort
-------------------------------
标题: 《优选》首尔甜城外地人可买近学校近地铁领包入住
编码与发布日期: 房屋编码:1270919780,发布时间:2018年06月06日
所属小区: 燕达首尔国际村
所在位置: 北京周边-燕郊-燕顺路,近京秦高速
建造年代: 2015年
房屋类型: 普通住宅
单价: 13970元/m²
-------------------------------
标题: 7号线沿线阿尔法一层带花园三居室三面采光精装修
编码与发布日期: 房屋编码:1287946996,发布时间:2018年06月18日
所属小区: 阿尔法社区C区
所在位置: 通州-九棵树-万盛中一街
建造年代: 2009年
房屋类型: 普通住宅
单价: 54538元/m²
-------------------------------
标题: 中.原清河上地橡树湾三期南北四居室税费低急售房
编码与发布日期: 房屋编码:1314178260,发布时间:2018年07月07日
所属小区: 橡树湾三期
所在位置: 海淀-清河-学府树中街,近朱房路
建造年代: 2012年
房屋类型: 普通住宅
单价: 88467元/m²
-------------------------------
标题: 业主急售,近期必卖南向一居。满五V一。品质小区
编码与发布日期: 房屋编码:1295328768,发布时间:2018年06月24日
所属小区: 芍药居北里小区
所在位置: 朝阳-芍药居-北四环东路
建造年代: 1996年
房屋类型: 普通住宅
单价: 94922元/m²
+++++++++++++++++++++++++++++
https://beijing.anjuke.com/sale/p40/#filtersort
-------------------------------
标题: 蓝岸丽舍1000平米花园全明格局动静分区顺义马坡
编码与发布日期: 房屋编码:1310472899,发布时间:2018年07月05日
所属小区: 蓝岸丽舍
所在位置: 顺义-顺义城-左堤路
建造年代: 2008年
房屋类型: 别墅
单价: 33057元/m²
-------------------------------
标题: 南四区无税急售紧邻水库白银楼层好房不等人!!!
编码与发布日期: 房屋编码:1308596291,发布时间:2018年07月04日
所属小区: 南华园四区
所在位置: 怀柔-怀柔-南华大街
建造年代: 2000年
房屋类型: 普通住宅
单价: 29174元/m²
-------------------------------
标题: 2150万南北大四居,品质社区
编码与发布日期: 房屋编码:1299310283,发布时间:2018年06月27日
所属小区: 融华世家
所在位置: 朝阳-亚运村小营-小营北路
建造年代: 2012年
房屋类型: 普通住宅
单价: 94929元/m²
-------------------------------
标题: 月初特惠,订房立减200万,花园面积400平米,纯独栋社区
编码与发布日期: 房屋编码:1286273712,发布时间:2018年06月17日
所属小区: 凯德麓语
所在位置: 昌平-兴寿镇-怀昌路
建造年代: 2018年
房屋类型: 别墅
单价: 36333元/m²
+++++++++++++++++++++++++++++
https://beijing.anjuke.com/sale/p41/#filtersort
+++++++++++++++++++++++++++++
没有下一页了



猜你喜欢

转载自blog.csdn.net/bq_cui/article/details/80963830