python爬取安居客房产信息存入excel

注:本博客只是供大家学习爬虫,如有违规,侵犯到了任何人的利益,请联系我,会立马删除博客内容。

一、数据分析

根据自己的需求,进行数据筛选,打开F12查看数据包。
在这里插入图片描述
本次实验爬取的字段有:小区名、小区地址、户型、面积、均价、总价。通过数据分析,发现我们需要的这些字段并不是通过ajax请求返回的,所以我们使用xpath来获取我们需要的数据。
首页的所有房源信息的数据分析完成后,需要再分析一共有多少页,以便获取所有页的房源数据。查看页面源码,看到在一个隐藏的<'li>标签中有总页数。
在这里插入图片描述
通过xpath获取总页数

total_page_num = page_info.xpath('//*[@id="esfMain"]/section/section[3]/section[1]/section[4]/div/ul/li[9]/a[1]/text()')[0]

二、代码

全代码如下:

# 武昌二手房,三室

import requests
from lxml import etree
import pandas as pd


def one_page(page):
    url = f'https://wuhan.anjuke.com/sale/wuchanga/b143-p{page}-fv1/'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36',
        'Referer': 'https://wuhan.anjuke.com/sale/wuchanga/p9-fv1/',
        'Cookie': 'your cookie'
    }

    res = requests.get(url=url, headers=headers).content.decode()
    page_info = etree.HTML(res)
    # 获取单页所有的小区名,小区地址,户型,总价,均价,面积
    info_list = page_info.xpath('//*[@id="esfMain"]/section/section[3]/section[1]/section[2]/div')
    df_one = []
    for i in info_list:
        title = i.xpath('./a/div[2]/div[1]/section[1]/div[2]/p[1]/text()')[0]   # 小区名
        address_list = i.xpath('./a/div[2]/div[1]/section[1]/div[2]/p[2]/span')  # 小区地址
        address = ''
        for j in address_list:
            address = address + j.xpath('./text()')[0] + '-'
        huxing_list = i.xpath('./a/div[2]/div[1]/section[1]/div[1]/p[1]/span')  # 户型
        huxing = ''
        for j in huxing_list:
            huxing = huxing + j.xpath('./text()')[0]
        area = i.xpath('./a/div[2]/div[1]/section[1]/div[1]/p[2]/text()')[0].strip()  # 面积
        total_price = i.xpath('./a/div[2]/div[2]/p[1]/span/text()')[0] + '万'  # 总价
        unit_price = i.xpath('./a/div[2]/div[2]/p[2]/text()')[0]  # 单价
        df_first = pd.DataFrame([{
            '小区': title,
            '地址': address,
            '户型': huxing,
            '面积': area,
            '单价': unit_price,
            '总价': total_price,
        }])
        df_one.append(df_first)
    # 获取有一共有多少页
    total_page_num = page_info.xpath('//*[@id="esfMain"]/section/section[3]/section[1]/section[4]/div/ul/li[9]/a[1]/text()')[0]

    return total_page_num, df_one


total_page_num, _ = one_page(1)
print(total_page_num)


# 获取多页数据
def all_page():
    # 存储表
    df_all = pd.DataFrame()
    for i in range(int(total_page_num)):
        print(f'正在打印第{i+1}页的数据')
        _, df_one = one_page(i+1)
        # 追加写入表
        df_all = df_all._append(df_one, ignore_index=True)
    return df_all


df_anjuke = all_page()
df_anjuke.to_excel('安居客.xlsx', index=False)

运行结果如下:
在这里插入图片描述
如果本篇博客对你有帮助,希望一起探讨更多python编程知识的,可私V:xiaodingdang0814。
欢迎大家点赞、评论、收藏,共同进步。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值