python爬虫爬取安居客房源信息

best365中国官网 admin 2025-08-19 19:12:57

爬取安居客房源信息

Xpath插件的安装

爬取重庆花溪附近的房源信息(进入正题啦~)

梳理下逻辑

爬取数据的通用流程

代码

代码的问题 & 运行时可能出现的问题

结果

数据处理部分(写给我自己哒~)

Xpath插件的安装

链接:https://pan.baidu.com/s/1T3V11Ev8dPODa2fCRbeuCg 提取码:qvzf 将这个安装包解压缩 打开谷歌浏览器的扩展程序 ----> 打开开发者模式 ----> 点击加载已解压的扩展程序 ----> 选择解压的文件夹 看下图操作 就会出现这个 浏览器导航栏上也会出现X图标 点击图标就会弹出 再点击就会关闭(或者使用快捷键ctrl+shift+X) 会出现这样的黑框 左边写Xpath语法 右面是匹配到的结果 还可以看到匹配到的数量 需要自己去学习一下Xpath定位的语法 很简单的 这里就不赘述了

爬取重庆花溪附近的房源信息(进入正题啦~)

先看一下页面的样子,梳理下逻辑

列表页页面 列表页的分页按钮

详情页页面(点击列表页标题进入)

梳理下逻辑

我们先根据分页获得某一页的列表页,然后爬取列表页的房价,然后进入详情页,爬取详情页的下列信息

爬取数据的通用流程

根据url请求页面,获取页面响应对象(也就是下面代码中的html_obj = requests.get(url=url, headers=headers))

将页面响应对象转化为etree/parsel对象 (tree = etree.HTML(html_obj))

定位要爬取的数据 (tree.xpath(’…’))

获取数据

持久化存储

代码

终于到了心心念念,激动人心的时刻啦~~ 上代码!!!哈哈哈 写了注释了,不过多解释

from collections import defaultdict

import requests

import pandas as pd

from lxml import etree

import re

# 获取到分页url的一个统一格式

url_all = 'https://chongqing.anjuke.com/sale/p{}-rd1/?kw=%E8%8A%B1%E6%BA%AA#filtersort'

# 请求头

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'

}

def get_url_list(url):

'''获取url列表 用于分页获取内容'''

url_list = [url.format(i) for i in range(1, 21)] # 获取20页

return url_list

def get_page_etree(url, headers):

'''得到页面的etree对象'''

html_obj = requests.get(url=url, headers=headers)# 根据url请求页面,获取页面响应对象html_obj

html_obj = html_obj.content.decode() # 解决乱码问题

tree = etree.HTML(html_obj) # 转化为页面的etree对象

return tree

def get_data(tree):

"""获取一页的房子数据"""

# 建立字典

info_dicts = defaultdict(list)

# 定位到一页列表页的所有li标签

li_list = tree.xpath('//ul[@id="houselist-mod-new"]/li')

for