以前几乎没有写过博客的,今年给自己立的flag其中有两条就是1.至少完成10篇计算类博客。2.每个月需要有一篇投资总结,so..

由于老妈最近逼着买房,但是现在感觉确实不是好的时机,具体的这里不说,但是身为码农总是要拿数据说话的,刚好想玩玩python,下面开始代码了。

首先去链家网上找到二手房成交记录去第二页看看,找下规律

链家首页

找到详情页规律

选择需要爬的信息

选择需要爬的信息

上面的就是一步步找到自己需要的信息

然后开始创建一下表

CREATE TABLE `lianjiachengjiao` (`id` int(11) NOT NULL AUTO_INCREMENT,`time` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '最近成交时间',`price` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '价格',`averageprice` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '平均价格(单位万元)',`district` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '小区名称',`houseType` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '房屋户型',`floor` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '所在楼层',`area` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '建筑面积',`structure` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '户型结构',`realarea` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '套内面积',`architectureType` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '建筑类型',`orientation` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '房屋朝向',`architecturetime` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '' COMMENT '建成年代',`decoration` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '装修情况',`architecture` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '建筑结构',`heating` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '供暖方式',`elevatorType` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '梯户比例',`propertyYear` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '产权年限',`elevator` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '配备电梯',`record` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '历史成交记录',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3686 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
import requests #导入requests 模块
from bs4 import BeautifulSoup  #导入BeautifulSoup 模块
import MySQLdb#导入MySQLdb  这里需要安装class GetLianJiaInfo():def __init__(self):  #类的初始化操作self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1'}  #给请求指定一个请求头来模拟chrome浏览器self.web_url = 'https://wh.lianjia.com/chengjiao/'  #要访问的网页地址       //  ........./pg1/def get_Info(self):i = 0while i < 100:i=i+1url= ''.join([self.web_url,'pg'+str(i )+'/'])print('开始网页get请求web_url' + url)r = self.request(url)#请求二手房成交记录页all_a = BeautifulSoup(r.text, 'html.parser').find_all('a',class_="img") #获取网页中的class为img的所有a标签for a in all_a: #循环每个标签#所有的数据存入list,方便sql拼接list =[]detailsurl = a['href'] #a标签中完整的href字符串print('开始请求详细页面' + str(detailsurl))ah = self.request(detailsurl)#请求二手房成交房子的详情页soup = BeautifulSoup(ah.text, 'lxml')title = soup.find('h1', class_='index_h1').text#获取主题信息中的---- 成交小区名称time = soup.find('div',class_='wrapper').find('span').text.split()[0].rstrip()#获取成交时间price = soup.find('span', class_='dealTotalPrice').text#成交价格averageprice = soup.find('div', class_='price').find('b').text#获取每平米价格list.append(title.split()[0].rstrip())list.append(time)list.append(price)list.append(averageprice)baseinform = soup.find('div', class_='base').find_all('li')#基本属性for label in baseinform:list.append(label.text[4:].rstrip())chengjiao_record = soup.find('div', class_='chengjiao_record').find_all('li')  # 历史成交记录record =''for chengjiao in chengjiao_record:record=record+chengjiao.text.rstrip()+';'list.append(record)sql = "INSERT INTO lianjiachengjiao( `district`, `time`, `price`, `averageprice`, `houseType`, `floor`, `area`, `structure`, " \"`realarea`, `architectureType`, `orientation`, `architecturetime`, `decoration`, `architecture`," \" `heating`, `elevatorType`, `propertyYear`, `elevator`, `record`) VALUES ('"+list[0]+"','"+list[1]+"','"+list[2]+"','"+list[3]+"','"+list[4]+"','"+list[5]+"','"+list[6]+"','"+list[7]+"','"+list[8]+"','"+list[9]+"','"+list[10]+"','"+list[11]+"','"+list[12]+"','"+list[13]+"','"+list[14]+"','"+list[15]+"','"+list[16]+"','"+list[17]+"','"+list[18]+"');"try:# 创建数据库连接db = MySQLdb.connect("localhost", "root", "password", "lianjia", charset='utf8')cursor = db.cursor()#执行sqlcursor.execute(sql)# 提交到数据库执行db.commit()except:# 出现异常回滚db.rollback()# 关闭数据库连接db.close()def request(self, url):  #返回网页的responser = requests.get(url, headers=self.headers)  # 像目标url地址发送get请求,返回一个response对象。有没有headers参数都可以。return rlianJiaInfo = GetLianJiaInfo()  #创建类的实例
lianJiaInfo.get_Info()  #执行类中的方法

详细的代码记录在这里基本都有注释,其中用到了BeautifulSoup 模块

api: https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/

用到了MySQLdb 这个需要安装

不然会报 ImportError: No module named MySQLdb  异常

对于不同的系统和程序有如下的解决方法:
easy_install mysql-python (mix os)
pip install mysql-python (mix os)
apt-get install python-mysqldb (Linux Ubuntu)
cd/usr/ports/databases/py-MySQLdb && make install clean (FreeBSD)
yum install MySQL-python (linux Fedora, CentOS)
pip install mysqlclient (Windows)

由于我现在的项目就是做一个大数据分析平台,而链家现在只提供100页的访问,所以数据还是不够只有3000条,准备继续爬一下其他网站上面的数据,开始研究下这么使用这些数据。

python 学习爬取链家武汉二手房市场成交记录相关推荐

  1. python爬取链家新房_Python爬虫实战:爬取链家网二手房数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 买房装修,是每个人都要经历的重要事情之一.相对于新房交易市场来说,如今的二手房交易市场一点也 ...

  2. python爬取链家新房数据_Python爬虫实战:爬取链家网二手房数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 买房装修,是每个人都要经历的重要事情之一.相对于新房交易市场来说,如今的二手房交易市场一点也 ...

  3. Python爬取链家地产二手房信息

    """ 1.爬取链家地产二手房信息 要求:使用代理进行爬取:59.58.151.34:3879 步骤:1.找URL第一页:https://yichang.lianjia. ...

  4. 多进程+多线程爬取链家武汉二手房价

    因为数据分析的需要,就写了爬取链家武汉的数据.因为用scrapy框架感觉太慢了,就自己写了个多进程同步执行的代码. 1.数据量:20000+ 2.程序环境:Python3.6--->用的Anac ...

  5. Python爬虫爬取链家网上的房源信息练习

    一 原链接:用Python爬虫爬取链家网上的房源信息_shayebuhui_a的博客-CSDN博客_python爬取链家 打开链家网页:https://sh.lianjia.com/zufang/  ...

  6. python+selenium爬取链家网房源信息并保存至csv

    python+selenium爬取链家网房源信息并保存至csv 抓取的信息有:房源', '详细信息', '价格','楼层', '有无电梯 import csv from selenium import ...

  7. 爬取链家网二手房数据并保存到mongodb中

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 爬取链家网二手房数据并保存到mongodb中 文章目录 前言 一.爬虫的介绍 二.协程的介绍 三.css选择器 四.基于asyncio ...

  8. 掌财社:python怎么爬取链家二手房的数据?爬虫实战!

    我们知道爬虫的比较常见的应用都是应用在数据分析上,爬虫作为数据分析的前驱,它负责数据的收集.今天我们以python爬取链家二手房数据为例来进行一个python爬虫实战.(内附python爬虫源代码) ...

  9. python爬取链家_python+scrapy爬虫(爬取链家的二手房信息)

    之前用过selenium和request爬取数据,但是感觉速度慢,然后看了下scrapy教程,准备用这个框架爬取试一下. 1.目的:通过爬取成都链家的二手房信息,主要包含小区名,小区周边环境,小区楼层 ...

最新文章

  1. matlab 工业相机 曝光时间_实战 | 相机标定
  2. 鼠标移入时闪闪发光的效果
  3. 微信支付服务器验证的java_Java中的微信支付(3):API V3对微信服务器响应进行签名验证...
  4. Mac技巧,更改Mac桌面图片
  5. 实用干货!大数据入门的常用技术栈全在这里了
  6. 手把手教你获取一年免费通配符泛域名SSL证书
  7. 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
  8. 乐视电视刷android tv,乐视超级电视升级系统方法详细教程攻略
  9. CodeForces 372 A. Counting Kangaroos is Fun
  10. Facebook广告效果数据获取
  11. pygame制作游戏全套的
  12. 极路由b70路由器虚拟服务器,极路由B70刷固件详细步骤说明(整合其它坛友经验)-少走弯路,造福坛友...
  13. 汉堡菜单html加logo,HTML+Sass实现HambergurMenu(汉堡包式菜单)
  14. linux 启动 grub 修复工具,当Ubuntu无法启动时,如何修复GRUB2?
  15. (转)Race condition解决
  16. Python语音基础操作--11.2基于GMM的说话人识别模型
  17. 墨者学院-在线靶场-HTTP头注入漏洞测试(X-Forwarded-for) Writeup
  18. 一位创业者创业失败后,成功的做了一个创业孵化器!
  19. 【亲测可用】revit2022安装教程
  20. 产教融合 | 数字技术工程师培育项目-大数据工程技术人员开班啦

热门文章

  1. HADOOP KMS使用介绍及性能测试
  2. 《Windows 8 权威指南》——2.5 Windows 8 Metro应用内存回收机制
  3. 第二章 聚合数据模型
  4. 每天一个俯卧撑的健身法 - 微习惯实践
  5. java 优化包_java美化界面包 | 学步园
  6. 区块链的硬分叉、软分叉介绍
  7. 关于updated()函数没有执行
  8. xml读取出现中文乱码
  9. APS高级计划与排程系统基本概念和功能说明
  10. 一款黑苹果系统引导工具,系统来解Clover带来的限制和问题