python爬取链家二手房信息并存储到数据库

2023-11-19

爬取链家的二手房信息,存储到数据库方便以后查看


页面分析

分析页面后发现是前后端未分离的状态,所以需要使用xpath分析界面元素
在这里插入图片描述
在li中存放着对应的div,有相关的信息:
在这里插入图片描述
分析请求链接:
在这里插入图片描述
只需要更改pg后面的数字即可,页面分析完毕。


提示:以下是本篇文章正文内容,下面案例可供参考

引入库

代码如下:

from lxml import etree
from fake_useragent import UserAgent
import requests
import random
import pymysql

# 代理池
proxy_pool = [{'HTTP': '175.43.151.3:9999'}, {'HTTP': '220.249.149.140:9999'}, {'HTTP': '175.44.108.206:9999'},
              {'HTTP': '120.83.101.115:9999'}, {'HTTP': '175.42.122.233:9999'}, {'HTTP': '60.13.42.107:9999'},
              {'HTTP': '113.195.152.127:9999'}, {'HTTP': '36.248.133.196:9999'}, {'HTTP': '120.83.105.95:9999'},
              {'HTTP': '112.111.217.160:9999'}, {'HTTP': '171.12.221.158:9999'}, {'HTTP': '113.121.72.221:9999'}]
# 伪装头
headers = {
    'Host': 'nj.lianjia.com',
    'User-Agent': UserAgent().random
}
# 开启数据库
conn = pymysql.Connect(host='localhost', port=3306, user='用户名',
                       password='数据库密码', db='对应数据库', charset='utf8')

方法编写

代码如下:

def get_page(url):
	# 请求页面
    response = requests.get(url=url, headers=headers, proxies=random.choice(proxy_pool)).text
    # 使用etree解析对象
    parse_data = etree.HTML(response)
    # 获取li的列表
    li_list = parse_data.xpath('//ul[@class="sellListContent"]/li')
    # 循环
    for li in li_list:
    	# 标题
        title = li.xpath('./div[@class="info clear"]/div[@class="title"]/a/text()')[0]
        # 地址
        flood = li.xpath('./div[@class="info clear"]/div[@class="flood"]/div[@class="positionInfo"]/a[1]/text()')[0] + \
                '- ' + \
                li.xpath('./div[@class="info clear"]/div[@class="flood"]/div[@class="positionInfo"]/a[2]/text()')[0]
        # 房型描述
        address = li.xpath('./div[@class="info clear"]/div[@class="address"]/div[@class="houseInfo"]/text()')[0]
        # 状态
        followInfo = li.xpath('./div[@class="info clear"]/div[@class="followInfo"]/text()')[0]
        # 总价
        totalPrice = li.xpath('./div[@class="info clear"]/div[@class="priceInfo"]/div[@class="totalPrice"]/span['
                              '1]/text()')[0] + '万'
        # 单价
        unitPrice = li.xpath('./div[@class="info clear"]/div[@class="priceInfo"]/div[@class="unitPrice"]/span[1]/text()')[0]
        # mysql数据库操作语句
        sql = 'insert into lianjia(title, flood, address, followInfo,totalPrice, unitPrice) ' \
              'values ("{}", "{}", "{}", "{}", "{}", "{}")'.format(title, flood, address, followInfo, totalPrice, unitPrice)
        cursor = conn.cursor()
        try:
        	# 执行语句
            cursor.execute(sql)
            # 事务
            conn.commit()
        except Exception as e:
            print(e)
            # 异常则回滚,保证数据安全
            conn.rollback()

主函数编写

代码如下:

if __name__ == '__main__':
	# 数据库模板
    base_url = 'https://nj.lianjia.com/ershoufang/pg{}/'
    # 循环遍历
    for i in range(1, 101):
        get_page(base_url.format(i))
        print('正在存储第{}条'.format(i) + '....')
    # 关闭数据库链接
    conn.close()

运行结果

在这里插入图片描述
对其进行条件查找,找出自己想要的数据:
在这里插入图片描述
注:案例仅供学习

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python爬取链家二手房信息并存储到数据库 的相关文章

随机推荐

  • Windows命令行实用技巧:详解del命令参数

    这个命令是用于Windows命令行 CMD 或者PowerShell的 它是使用 del 命令来删除文件 s f 和 q 是该命令的参数 s 参数 这个参数表示递归 即命令会删除指定目录及其子目录中的指定文件 f 参数 这个参数表示强制 即
  • mybatisPlus如何进行联接

    我想左连接某表 plus有没有提供api 类型leftJoin方法 是的 MyBatis Plus 提供了 API 来支持左连接查询 可以使用 leftJoin 方法进行左连接操作 以下是一个示例代码 import com baomidou
  • 调试osgEarth(33)分页瓦片卸载器子节点的作用-(3)渲染遍历的帧号和时间设置-_terrain使用TerrainCuller

    继续调试 这个是一堆NULL 省事了 然而 真的有这么简单么 想想地球加载起来时 视点变化时
  • 关于命令或语法中的方括号,尖括号等符号的区别

    关于方括号和尖括号的区别 命令说明或者语法说明中包含一些方括号 lt gt 等符号 方括号 表示可选参数 尖括号 表示必填参数 1 基本符号命令 内的内容意思是 可写可不写 那就必须要在 内给出的选择里选一个 lt gt 表示必选 注 不能
  • PKI体系及密码算法

    HTTPS 的诞生 可先参考网络协议 HTTPS协议等文章 明文传输 对称加密 加密 和 解密 使用 相同的 密钥 如果密钥可以安全的传输 那么消息也应该可以安全的传输 非对称加密 上述非对称加密与对称加密效果基本一样 如果公钥可以安全的传
  • squid使用NCSA验证

    如果要在squid中加入用户名和密码的验证 使用NCSA是最方便的 生成用户名 密码文件 用命令 htpasswd 来生成 使用非常简单 生成一个叫passwdfile的密码文件 包含username和password账户 htpasswd
  • 【电子电路】RS485收发器两种典型电路

    1 基本RS 485 电路 图1为一个经常被应用到的SP485R芯片的示范电路 可以被直接嵌入实际的RS 485应用电路中 微处理器的标准串行口通过RXD 直接连接SP485R 芯片的 RO 引脚 通过TXD直接连接SP485R 芯片的 D
  • Markdown基础语法介绍

    何为Markdown Markdown是一种轻量级标记语言 它允许用户以纯文本格式编写文档 然后转换成有效的XHTML或HTML文档 Markdown具备轻量化 跨平台 易读易写等特性 且支持文本 图片 图表等多种展示样式 Markdown
  • 使用Mac的十大最好用神器

    资深 Mac 用户 提升效率的 10 大神器 谢志鹏 大家好 我是曹将的徒弟 Pem 最近刚结束悉尼大学研究生的学习 是一枚正在求职的交互设计师 我是从 2015 年开始使用 Mac 的 如果用一句话来形容 Mac 的使用感受 那就是 令人
  • 下载Freescale CodeWarrior 11.0解决Freescale CodeWarrior 代码限制(不需要license)

    一些NXP的项目需要软件Freescale CodeWarrior的最新版本10 7 但是新安装了软件之后 10 7版本的license只能使用一个月 一个月到期后 就会有代码大小的限制 这个时候 需要花钱购买license 费用几千块钱
  • android.accessibilityservice包介绍

    android accessibilityservice 英文原文 http developer android com reference android accessibilityservice package summary html
  • Ant Design Pro 修改主题设置

    Ant Design Pro 修改主题设置 主题是在项目根目录下的config defaultSettings js文件下内所定义的其中导出的Settings对象中即为默认的主题等配置 如下图 const Settings navTheme
  • Vue2项目使用高德地图

    目录 一 账号准备 1 注册账号 2 获取key 二 快速上手 1 安装 2 创建地图 3 点标记 4 海量点标记 5 简易行政区图 6 GeoJSON 三 绑定事件 总结 一 账号准备 1 注册账号 首先 注册开发者账号 成为高德开放平台
  • 高德地图加渐变色3D线段

    想用高德地图实现渐变色的边界效果 查看了很多资料 测试了很多方法 终于实现啦 记录一下 1 按照高德官方示例创建地图 var map new AMap Map container pitch 75 地图俯仰角度 有效范围 0 度 83 度
  • python基础练习--《人力资源管理员工管理》

    python新手入门练习 运用python的基础数据结构编写 人力资源管理员工管理 初学python 入门练习 留些记录 方便以后查看 如有错误 请诸位大神指点 谢谢 需求分析 要求使用python的最基础的数据结构 字典 元组 列表 字符
  • [系统安全] 四十六.恶意软件分析 (2)静态分析Capa经典工具批量提取静态特征和ATT&CK技战术

    终于忙完初稿 开心地写一篇博客 您可能之前看到过我写的类似文章 为什么还要重复撰写呢 只是想更好地帮助初学者了解病毒逆向分析和系统安全 更加成体系且不破坏之前的系列 因此 我重新开设了这个专栏 准备系统整理和深入学习系统安全 逆向分析和恶意
  • JS 实现一键复制(复制DIV)

    话不多说 直接上代码 JS部分 function copyDivContent divId 获取标签内容 const div document getElementById divId 创建文档区域 const range document
  • 计算机硬件系统结构主要分为什么五大组成,硬件系统的五大组成部分

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 以计算机为例 硬件系统的五大组成部分别为 储存器 控制器 运算器 输入设备 输出设备 计算机硬件 Computer hardware 是指计算机系统中由电子 机械和光电元件
  • 面试题流散汇总

    1 n位数全排列 大字符串相加 SQL HTTPS 根据简历来问 2 MapReduce和Spark的主要区别在于 MapReduce使用持久存储 而Spark使用弹性分布式数据集 RDDS Spark之所以如此快速 原因在于它在内存中处理
  • python爬取链家二手房信息并存储到数据库

    爬取链家的二手房信息 存储到数据库方便以后查看 文章目录 页面分析 引入库 方法编写 主函数编写 运行结果 页面分析 分析页面后发现是前后端未分离的状态 所以需要使用xpath分析界面元素 在li中存放着对应的div 有相关的信息 分析请求