【Python爬虫篇】 BeautifulSoup之链家二手房

本案例用到列表,函数,字符串等知识点,知识点参考链接如下:
python基础知识(一)&输入输出函数
python基础知识(二)&基本命令
python基础知识(三)&常用的内置函数
python基础知识(四)&符串常用的方法
python基础知识(六)&字典
python基础知识(七)& 列表
python基础知识(八)&open函数
python基础知识(九)&函数

完整代码如下:

# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import pandas as pd
import csv

def qingqiu(url):
    rq = requests.get(url, headers=headers)
    html = rq.text
    return html

def paser_html(html):
    bs=BeautifulSoup(html,"lxml")
    price_all=[]
    price=bs.select('span[class=""]')
    for p in price:
        price_all.append(float(p.get_text()))

    danjia_all=[]
    danjia=bs.select('div[class="unitPrice"]')
    for d in danjia:
        danjia_all.append(d.get_text().replace("元/平",""))

    loupan_all=[]
    loupan=bs.select('a[data-el="region"]')
    for l in loupan:
        loupan_all.append(l.get_text())

    all=bs.select('div[class="houseInfo"]')
    all_data=[]
    for a in all:
        all_data.append(a.get_text().split('|'))
    huxing=[]
    size=[]
    fangxiang=[]
    zhuangxiu=[]
    louceng=[]
    for i in all_data:
        huxing.append(i[0])
        size.append(float(i[1].replace("平米","")))
        fangxiang.append(i[2])
        zhuangxiu.append(i[3])
        louceng.append(i[4])
    result=zip(loupan_all,danjia_all,price_all,huxing,size,fangxiang,zhuangxiu,louceng)
    return result

def save(result):  # 保存
    with open('长沙二手房.csv', "a", newline='', encoding='utf-8') as f:
        wr = csv.writer(f)
        for a in result:
            wr.writerow(a)

if __name__ == '__main__':
    T_head = ['楼盘', '单价', '总价', '户型', '面积', '方向', '装修','楼层']
    with open('长沙二手房.csv', "a", newline='', encoding='utf-8') as f:
        wr = csv.writer(f)
        wr.writerow(T_head)

    start_ye = int(input("请输入起始页:"))
    end_ye = int(input("请输入终止页:"))
    for y in range(start_ye, end_ye):
        url='https://cs.lianjia.com/ershoufang/pg{}/'.format(y)
        headers = {'User-Agent':'Mozilla/5.0'}
        html=qingqiu(url)
        result=paser_html(html)
        save(result)
        print("爬取第{}页".format(y))

运行后保存的数据如下表所示:

在这里插入图片描述

二手房爬虫的过程可以按照以下步骤进行: 1. 构造URL:网的二手房信息URL是按页码递增的,例如"https://bj.lianjia.com/ershoufang/pg2/"表示第二页的二手房信息。可以通过循环递增页码来获取多页的信息。\[1\] 2. 添加头信息:为了能够成功访问网,需要在请求中添加头信息。这样可以模拟浏览器的请求,避免被网站屏蔽。\[1\] 3. 解析网页:使用BeautifulSoup库解析网页,可以方便地提取出二手房信息。可以通过查找特定的HTML元素或CSS选择器来定位所需的信息。\[1\] 4. 处理信息:对于获取到的二手房信息,可以进行一些简单的处理,例如清洗数据、格式化数据等。可以使用Python的字符串处理函数或正则表达式来实现。\[1\] 5. 保存数据:将处理后的二手房信息保存成CSV文件,可以使用Python的CSV库来实现。这样可以方便地进行后续的数据分析或导入到其他系统中。\[1\] 另外,对于爬虫的作者,建议优先考虑抓取JSON数据而不是网页数据。因为JSON是一个API接口,相比于网页来说,更新频率低且维护成本低。而网页的结构可能会经常变化,导致爬虫的维护工作变得复杂。\[2\] 在网中,可以通过以下URL获取其他类型的房产信息: - 海外房产:https://bj.lianjia.com/i/ - 卖房信息:https://bj.lianjia.com/bj/yezhu/ - 新房信息:https://bj.lianjia.com/bj/loupan/fang/ - 小区信息:https://bj.lianjia.com/bj/xiaoqu/ - 成交信息:https://bj.lianjia.com/bj/chengjiao/ - 租房信息:https://bj.lianjia.com/chuzu/bj/zufang/ - 二手房信息:https://bj.lianjia.com/bj/ershoufang/index/ - 写字楼信息:https://shang.lianjia.com/bj/ \[3\] 希望以上信息对您有所帮助! #### 引用[.reference_title] - *1* [python爬取二手房信息](https://blog.youkuaiyun.com/qq_35557718/article/details/97920146)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [用python爬取二手房楼盘](https://blog.youkuaiyun.com/sinat_38682860/article/details/90047261)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值