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

因为最近要买房子,然后对房市做了一些调研,发现套路极多。卖房子的顾问目前基本都是一派胡言能忽悠就忽悠,所以基本他们的话是不能信的。一个楼盘一次开盘基本上都是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:
                continue
            else:
                infopiece = i.find(‘div‘).text.strip() + ‘ ‘
                empty += infopiece
        total.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).text
    soup2 = 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 pd

df = 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

时间: 2024-11-01 13:56:36

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

使用request+bs4爬取所有股票信息

爬取前戏 我们要知道利用selenium是非常无敌的,自我认为什么反爬不反爬都不在话下,但是今天我们为什么要用request+bs4爬取所有股票信息呢?因为他比较原始,因此今天的数据,爬取起来也是比较繁琐的!接下来让我们emmmm....你懂得 爬取步骤 第一步:获取股票代码 1)我们通过这个链接去网易看一下具体的股票信息,下面这个网页是乐视网的股票信息http://quotes.money.163.com/trade/lsjysj_300104.html#01b07 2)上海证券交易所的官方网

针对源代码和检查元素不一致的网页爬虫——利用Selenium、PhantomJS、bs4爬取12306的列车途径站信息

整个程序的核心难点在于上次豆瓣爬虫针对的是静态网页,源代码和检查元素内容相同:而在12306的查找搜索过程中,其网页发生变化(出现了查找到的数据),这个过程是动态的,使得我们在审查元素中能一一对应看到的表格数据没有显示在源代码中.这也是这次12306爬虫和上次豆瓣书单爬虫的最大不同点. 查找相关资料,我选择使用Selenium的PhantomJS模拟浏览器爬取源代码,这样获取到的datas包含了我需要的(查找搜索出的)途径站数据. 暂时把整个程序分为了这几个部分:(1)提取列车Code和No信息

python爬取网易云周杰伦所有专辑,歌曲,评论,并完成可视化分析

---恢复内容开始--- 去年在网络上有一篇文章特别有名:我分析42万字的歌词,为搞清楚民谣歌手们在唱些什么.这篇文章的作者是我大学的室友,随后网络上出现了各种以为爬取了XXX,发现了XXX为名的文章.我想了想,我能不能也通过爬虫来做些什么呢?先入为主,我也以歌曲作为切入口---周杰伦,是的,我们这一代的生活成长,总是离不开周董的声音的陪伴,那我就来爬取周董的歌曲,歌曲评论,歌词,以及各种有用的信息并做一个可视化吧. 这篇文章适合于python纯小白,因为本人也是python刚刚入门,里面可能很

拉勾网爬取全国python职位并数据分析薪资,工作经验,学历等信息

首先前往拉勾网"爬虫"职位相关页面 确定网页的加载方式是JavaScript加载 通过谷歌浏览器开发者工具分析和寻找网页的真实请求,确定真实数据在position.Ajax开头的链接里,请求方式是POST 使用requests的post方法获取数据,发现并没有返回想要的数据,说明需要加上headers和每隔多长时间爬取 我们可以看到拉勾网列表页的信息一般js加载的都在xhr和js中,通过发送ajax加载POST请求,获取页面信息. 这个是ajax的头信息,通过Form Data中的的信

利用bs4爬取三国演义所有章节标题以及章节内容

url = ' http://www.shicimingju.com/book/sanguoyanyi.html' from bs4 import BeautifulSoup import requests url = 'http://www.shicimingju.com/book/sanguoyanyi.html' headers = { 'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWe

python爬取百度搜索结果ur汇总

写了两篇之后,我觉得关于爬虫,重点还是分析过程 分析些什么呢: 1)首先明确自己要爬取的目标 比如这次我们需要爬取的是使用百度搜索之后所有出来的url结果 2)分析手动进行的获取目标的过程,以便以程序实现 比如百度,我们先进行输入关键词搜索,然后百度反馈给我们搜索结果页,我们再一个个进行点击查询 3)思考程序如何实现,并克服实现中的具体困难 那么我们就先按上面的步骤来,我们首先认识到所搜引擎,提供一个搜索框,让用户进行输入,然后点击执行 我们可以先模拟进行搜索,发现点击搜索之后的完整url中有一

用python爬取亚马逊物品列表

1. 仔细分析亚马逊查询详细界面可以看出来,主要关键部分有三个地方,这三个地方分别控制了查询列表的页面和关键字,所以修改这几个参数可以改变列表页数以及模糊查询的结果 http://www.amazon.cn/s/ref=sr_pg_3?rh=n%3A658390051%2Ck%3Aphp&page=3&keywords=Java&ie=UTF8&qid=1459478790 2. 通过基础链接以及正则表达式匹配的方法进行替换的方式改变爬取页面,注意由于使用了正则表达式匹配,

python爬取手机归属地

用python+bs4爬取了手机归属地数据: import urllib.request from bs4 import BeautifulSoup def spider1(url): headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11', 'Accept':'text/html;q=0.9,*/

爬取N个网页,并将其记录

挖的坑,终于能填上了,先共享出来,大家有个对比参考.也帮忙找找错误.我也正在看,看看原来是哪里出了问题. 下面这段代码已经实现了网页的爬取: 其效果为: 下面给出详细说明: 上图中出现的 __init__.py 文件,是一个空的,但是必须建立(我也没想明白为啥). 程序结束后,打开output.html 就可以了. 1.这是网页管理模块  url_manager.py    (点击+号,看代码) class UrlManager(object): def __init__(self): self