因为最近要买房子,然后对房市做了一些调研,发现套路极多。卖房子的顾问目前基本都是一派胡言能忽悠就忽悠,所以基本他们的话是不能信的。一个楼盘一次开盘基本上都是200-300套房子,数据量虽然不大,但是其实看一下也很烦要一页一页的翻,如果是在纸上的话,他们还不让你给带回去。所以就是在选一个价格楼层也合适的房子,基本上很不方便。但是幸运的是,合肥市的房子的所有的价格都在合肥是物价局上面公示出来了。所以这里考虑的就是先把房子的价格数据都给爬下来,然后分析房子的单价,总价来选个觉得最适合自己的房源。

这里涉及的技术点是这样

1. 发出post指令传入参数,获取url不变的分页网络信息

2. 解析网页的结构,用bs4去抓取自己需要的内容

3. 综合1,2两点编写完整的脚本代码,讲自己需要的房源的信息给爬取下来

4. pandas的对于dataframe的操作,选出适合自己的房子。

下面是操作步骤:

这里是我们要爬取的页面

一共是15个分页,但是每个分页点进去的时候,url是没有变化的,也就是说我们没办法直接的通过更改url来访问页面。

打开Network,参数在这里,把他们用post请求发进去,就可以翻页了。

这时候我们需要找到我们需要爬取的数据的信息,看下网页的element,来定位到我们的数据信息

好像都在这里

那这个里面的子节点呢

大概是这个样子。

下面是我写的爬虫:

# import libraray
import requests
import os
import pandas as pd
import re
from lxml import etree
from bs4 import BeautifulSoup# source url
url2 = "http://app.hfpi.gov.cn/fangjia/ws/Detail2.aspx?Id=5421"
headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"}# 每次都更新下参数
def update_data_dict(soup):data_dict['__VIEWSTATE'] = soup.find(id='__VIEWSTATE')['value']data_dict['__EVENTTARGET'] = 'AspNetPager1'data_dict['__EVENTARGUMENT'] += 1#保存下来爬取的当页的数据
def save_data(soup):x = soup('table',width='97%')xx = x[2]y = xx('tr')total = []for item in y[1:-1]:content1 = item('td')empty = ''for i in content1:if i.find('div') == None:continueelse:infopiece = i.find('div').text.strip() + ' 'empty += infopiecetotal.append(empty)with open('result0.txt','a') as f:for senc in total:f.write(senc + '\n')  # 接着去下一页继续爬
def get_next_page_data():html2 = requests.post(url, data=data_dict).textsoup2 = BeautifulSoup(html2, 'lxml')update_data_dict(soup2)save_data(soup2)## 现在开始爬取
html_jsy = requests.get(url2).text
soup_jsy = BeautifulSoup(html_jsy,'lxml')
save_data(soup_jsy)
update_data_dict(soup_jsy)
# 这里总页数我就设置20,如果后面没有了,也不会继续访问
for i in range(20):get_next_page_data_2()

那么我们看下我们爬取的结果

美滋滋,数据我们拿下来了。

接着我们要开始读取数据开始分析了

import pandas as pddf = pd.read_csv('result-jsy.txt', sep=' ',header=None)#change column name
df.columns = ['BuildingNo','RmNo','Type','Area','ShareArea','RealArea','Price','totalPrice','1','2','3','4']# 这次开盘只有16还有18, 先把16 18给选出来,然后合并
df_16 = df[df.BuildingNo =='G16']
df_18 = df[df.BuildingNo == 'G18']
p_list = [df_16,df_18]
df_temp = pd.concat(p_list)

因为这个楼盘有优惠,91折,所以单价我可以接受的范围我设置在14500

df_temp[df_temp.Price <= 14500.0]

这里,我想住在5楼以上

df_select1[df_select1.RmNo > 500]

好吧,其实筛选就很简单了,这里因为明天就开盘了,所以首要就是看到价格然后楼层尽量高,

这里看,我的首选就是G18-703,但是上面其他的也都可以考虑。

转载于:https://www.cnblogs.com/chenyusheng0803/p/9503430.html

BS4爬取物价局房产备案价以及dataframe的操作来获取房价的信息分析相关推荐

  1. bs4爬取的时候有两个标签相同_4.4 爬虫中的bs4数据爬取步骤

    >>.第三方包先安装 beatifulsoup抓取工具 位置:第三方开发包,如果使用,则需要单独下载的工具包 安装:后台命令:9版本以下----pip install bs4 或者 pip ...

  2. BS4爬取电影天堂的下载地址并保存至csv文件

    思路:BS4爬取电影天堂中最新电影名称及下一级链接中的下载地址,结果保存至csv文件 存在问题及需要完善(恳请各位大神提供帮助): (1)采集结果中的下载链接存在乱码: (2)代码需要优化. # co ...

  3. python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程

    python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程 前言 一丶整体思路 二丶遇到的问题 三丶分析URL 四丶解析页面 五丶写入文件 六丶完整代码 七丶最后 前言 大家好我是墨绿 头顶总 ...

  4. bs4主要知识点介绍及实例解析---利用bs4爬取伯乐在线(分别存储在数据库和xls表中)

    bs4主要知识点介绍及实例讲解 bs4 是第三方解析html数据的包 from bs4 import BeautifulSoup lxml 解析读取html的第三方解释器,解析速度快,底层通过c实现 ...

  5. python3 requests+bs4爬取某网页MM图片

    python3 requests+bs4爬取某网页MM图片 原理: 将所要抓取的首页分标题及地址保存到字典,遍历字典,对每一个标题下的所有分页进行抓取 import requests from bs4 ...

  6. Python借助爬虫Requests+BS4爬取人民教育出版社义务教育下学期课本(二)

    文章目录 思路梳理 封装函数 重要提示 系列文章 思路梳理 我们打开网页,可以看到这其中有许多链接,我们可以查看一下网页源代码,可以看到如我们所期盼的一样,这里有许多的链接,我们只需要把链接爬取出来就 ...

  7. Python借助爬虫Requests+BS4爬取人民教育出版社义务教育下学期课本(一)

    经过一晚上的休息,我已经重新从阴影中站了起来,并重新发现了一个人性化的网站,一起来看看这个网站吧 来到了人民教育出版社的官网,一看,顿时晕眩三秒,我昨天的努力不都白费了吗,只得重新打起精神,研究一下这 ...

  8. 使用bs4爬取软科大排名并保存在数据库

    1.使用bs4爬取软科大排名,首先我们要使用到三个库文件,requests库.bs4和pymysql: 2.获取网页 #获取网页 def getHTMLText(url):#获取URL信息,输出内容t ...

  9. python用bs4爬取豆瓣电影排行榜 Top 250的电影信息和电影图片,分别保存到csv文件和文件夹中

    python用bs4爬取豆瓣电影排行榜 Top 250的电影信息和图片,分别保存到csv文件和文件夹中. 爬取的数据包括每个电影的电影名 , 导演 ,演员 ,评分,推荐语,年份,国家,类型. py如果 ...

  10. JAVA爬取某房产网房源信息

    本文为开发流程记录,排版和言语存在的问题请大家谅解,如有错误或者建议,请指出,谢谢. 之前写过一个使用Python+Beautiful Soup爬故事会,然后存文件的小爬虫,当时没有记录,最近公司不忙 ...

最新文章

  1. 美国多个城市禁止、我国却蓬勃发展的人脸识别是什么样子?
  2. PL/SQL 数据库连接工具的下载、安装与使用实例演示
  3. Android 编程下获得应用程序的签名
  4. 【Python】Python+Matplotlib+LaTeX玩转数学公式
  5. 输入法注入源码_将注入进行到底:利用Mono注入C#游戏脚本
  6. 钉钉小程序数据传递——子传父,父传子
  7. python小甲鱼爬虫妹子_【Python学习日记】B站小甲鱼:爬虫
  8. vue indev.html,webpack - Can't add script tag to Vue component files ( *.vue ) - Stack Overflow
  9. 君子动手不动口,阿里云喊你做云上体验官啦!
  10. 循环比赛日程表(信息学奥赛一本通-T1325)
  11. 在线翻译英文html文件,copy html是什么意思
  12. Flutter StreamBuilder 异步更新数据
  13. 面试必问题:JS防抖与节流
  14. mvn命令传递参数和pom文件配置的关系
  15. 使用csc命令手动编译cs文件
  16. 基于STM32居家加湿器控制仿真设计-基于STM32热释人体感应智能门禁报警设计-基于STM32无刷电机BLDC速度控制器设计-基于STM32智能路灯灯光自动控制设计-基于单片机PID控制算法开关电源
  17. 使用简短JS事件代码实现原生北京时间时钟
  18. 全新体验的飞冰 2.0 正式发布
  19. 陶泓达:3.23黄金,原油,白银操作策略!
  20. Java OutputStream.write()的功能简介说明

热门文章

  1. STM32F10X的IAP编程详解——开发指南
  2. 如何用两个晚上教女生学会Python
  3. 鱼缸悬浮很多微小气泡_鱼缸水里有很多小气泡解决方案
  4. Google企业邮箱申请
  5. grub4dos linux live,grub4dos安装
  6. js的柯里化(curry)
  7. 中年男人,你如何自我救赎
  8. 五星大饭店剧情,五星大饭店在线观看
  9. 麻省理工学院公开课:经典力学
  10. 解决dns没问题,能上qq不能上网的问题