python 学习爬取链家武汉二手房市场成交记录
以前几乎没有写过博客的,今年给自己立的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 学习爬取链家武汉二手房市场成交记录相关推荐
- python爬取链家新房_Python爬虫实战:爬取链家网二手房数据
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 买房装修,是每个人都要经历的重要事情之一.相对于新房交易市场来说,如今的二手房交易市场一点也 ...
- python爬取链家新房数据_Python爬虫实战:爬取链家网二手房数据
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 买房装修,是每个人都要经历的重要事情之一.相对于新房交易市场来说,如今的二手房交易市场一点也 ...
- Python爬取链家地产二手房信息
""" 1.爬取链家地产二手房信息 要求:使用代理进行爬取:59.58.151.34:3879 步骤:1.找URL第一页:https://yichang.lianjia. ...
- 多进程+多线程爬取链家武汉二手房价
因为数据分析的需要,就写了爬取链家武汉的数据.因为用scrapy框架感觉太慢了,就自己写了个多进程同步执行的代码. 1.数据量:20000+ 2.程序环境:Python3.6--->用的Anac ...
- Python爬虫爬取链家网上的房源信息练习
一 原链接:用Python爬虫爬取链家网上的房源信息_shayebuhui_a的博客-CSDN博客_python爬取链家 打开链家网页:https://sh.lianjia.com/zufang/ ...
- python+selenium爬取链家网房源信息并保存至csv
python+selenium爬取链家网房源信息并保存至csv 抓取的信息有:房源', '详细信息', '价格','楼层', '有无电梯 import csv from selenium import ...
- 爬取链家网二手房数据并保存到mongodb中
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 爬取链家网二手房数据并保存到mongodb中 文章目录 前言 一.爬虫的介绍 二.协程的介绍 三.css选择器 四.基于asyncio ...
- 掌财社:python怎么爬取链家二手房的数据?爬虫实战!
我们知道爬虫的比较常见的应用都是应用在数据分析上,爬虫作为数据分析的前驱,它负责数据的收集.今天我们以python爬取链家二手房数据为例来进行一个python爬虫实战.(内附python爬虫源代码) ...
- python爬取链家_python+scrapy爬虫(爬取链家的二手房信息)
之前用过selenium和request爬取数据,但是感觉速度慢,然后看了下scrapy教程,准备用这个框架爬取试一下. 1.目的:通过爬取成都链家的二手房信息,主要包含小区名,小区周边环境,小区楼层 ...
最新文章
- matlab 工业相机 曝光时间_实战 | 相机标定
- 鼠标移入时闪闪发光的效果
- 微信支付服务器验证的java_Java中的微信支付(3):API V3对微信服务器响应进行签名验证...
- Mac技巧,更改Mac桌面图片
- 实用干货!大数据入门的常用技术栈全在这里了
- 手把手教你获取一年免费通配符泛域名SSL证书
- 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
- 乐视电视刷android tv,乐视超级电视升级系统方法详细教程攻略
- CodeForces 372 A. Counting Kangaroos is Fun
- Facebook广告效果数据获取
- pygame制作游戏全套的
- 极路由b70路由器虚拟服务器,极路由B70刷固件详细步骤说明(整合其它坛友经验)-少走弯路,造福坛友...
- 汉堡菜单html加logo,HTML+Sass实现HambergurMenu(汉堡包式菜单)
- linux 启动 grub 修复工具,当Ubuntu无法启动时,如何修复GRUB2?
- (转)Race condition解决
- Python语音基础操作--11.2基于GMM的说话人识别模型
- 墨者学院-在线靶场-HTTP头注入漏洞测试(X-Forwarded-for) Writeup
- 一位创业者创业失败后,成功的做了一个创业孵化器!
- 【亲测可用】revit2022安装教程
- 产教融合 | 数字技术工程师培育项目-大数据工程技术人员开班啦