基于Python实现最新房价信息的获取

整个数据获取的信息是通过房源平台获取的,通过下载网页元素并进行数据提取分析完成整个过程

导入相关的网页下载、数据解析、数据处理库

from fake_useragent import UserAgent  # 身份信息生成库

from bs4 import BeautifulSoup  # 网页元素解析库
import numpy as np  # 科学计算库
import requests  # 网页下载库
from requests.exceptions import RequestException  # 网络请求异常库
import pandas as pd  # 数据处理库

然后,在开始之前初始化一个身份信息生成的对象,用于后面随机生成网页下载时的身份信息。

user_agent = UserAgent()

编写一个网页下载函数get_html_txt,从相应的url地址下载网页的html文本。

def get_html_txt(url, page_index):
    '''
    获取网页html文本信息
    :param url: 爬取地址
    :param page_index:当前页数
    :return:
    '''
    try:
        headers = {
            'user-agent': user_agent.random
        }
        response = requests.request("GET", url, headers=headers, timeout=10)
        html_txt = response.text
        return html_txt
    except RequestException as e:
        print('获取第{0}页网页元素失败!'.format(page_index))
        return ''

编写网页元素处理函数catch_html_data,用于解析网页元素,并将解析后的数据元素保存到csv文件中。

def catch_html_data(url, page_index):
    '''
    处理网页元素数据
    :param url: 爬虫地址
    :param page_index:
    :return:
    '''

    # 下载网页元素
    html_txt = str(get_html_txt(url, page_index))

    if html_txt.strip() != '':

        # 初始化网页元素对象
        beautifulSoup = BeautifulSoup(html_txt, 'lxml')

        # 解析房源列表
        h_list = beautifulSoup.select('.resblock-list-wrapper li')

        # 遍历当前房源的详细信息
        for n in range(len(h_list)):
            h_detail = h_list[n]

            # 提取房源名称
            h_detail_name = h_detail.select('.resblock-name a.name')
            h_detail_name = [m.get_text() for m in h_detail_name]
            h_detail_name = ' '.join(map(str, h_detail_name))

            # 提取房源类型
            h_detail_type = h_detail.select('.resblock-name span.resblock-type')
            h_detail_type = [m.get_text() for m in h_detail_type]
            h_detail_type = ' '.join(map(str, h_detail_type))

            # 提取房源销售状态
            h_detail_status = h_detail.select('.resblock-name span.sale-status')
            h_detail_status = [m.get_text() for m in h_detail_status]
            h_detail_status = ' '.join(map(str, h_detail_status))

            # 提取房源单价信息
            h_detail_price = h_detail.select('.resblock-price .main-price .number')
            h_detail_price = [m.get_text() for m in h_detail_price]
            h_detail_price = ' '.join(map(str, h_detail_price))

            # 提取房源总价信息
            h_detail_total_price = h_detail.select('.resblock-price .second')
            h_detail_total_price = [m.get_text() for m in h_detail_total_price]
            h_detail_total_price = ' '.join(map(str, h_detail_total_price))

            h_info = [h_detail_name, h_detail_type, h_detail_status, h_detail_price, h_detail_total_price]
            h_info = np.array(h_info)
            h_info = h_info.reshape(-1, 5)
            h_info = pd.DataFrame(h_info, columns=['房源名称', '房源类型', '房源状态', '房源均价', '房源总价'])
            h_info.to_csv('北京房源信息.csv', mode='a+', index=False, header=False)

        print('第{0}页房源信息数据存储成功!'.format(page_index))
    else:
        print('网页元素解析失败!')

编写多线程处理函数,初始化网络网页下载地址,并使用多线程启动调用业务处理函数catch_html_data,启动线程完成整个业务流程。

import threading  # 导入线程处理模块

def thread_catch():
    '''
    线程处理函数
    :return:
    '''
    for num in range(1, 50, 3):
        url_pre = "https://bj.fang.lianjia.com/loupan/pg{0}/".format(str(num))
        url_cur = "https://bj.fang.lianjia.com/loupan/pg{0}/".format(str(num + 1))
        url_aft = "https://bj.fang.lianjia.com/loupan/pg{0}/".format(str(num + 2))

        thread_pre = threading.Thread(target=catch_html_data, args=(url_pre, num))
        thread_cur = threading.Thread(target=catch_html_data, args=(url_cur, num + 1))
        thread_aft = threading.Thread(target=catch_html_data, args=(url_aft, num + 2))
        thread_pre.start()
        thread_cur.start()
        thread_aft.start()

thread_catch()

数据存储结果展示效果

以上就是基于Python实现最新房价信息的获取的详细内容,更多关于Python获取房价信息的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python 获取异常(Exception)信息的几种方法

    异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置.下面介绍几种 Python 中获取异常信息的方法,这里获取异常(Exception)信息采用 try-except- 程序结构. 如下所示: try: print(x) except Exception as e: print(e) 1. str(e) 返回字符串类型,只给出异常信息,不包括异常信息的类型,如: try: print(x) except Exception as e: print(str(e)) 打印结

  • Python中BeautifulSoup通过查找Id获取元素信息

    比如如下的html 他是在span标签下的class为name,id为is-like-span 这样就可以通过这样的代码进行方法: isCliked = soup.find('span', id = 'is-like-span' 通过这种方式去获取即可,如果里面的为字符串则调用get_text()即可 到此这篇关于Python中BeautifulSoup通过查找Id获取元素信息的文章就介绍到这了,更多相关BeautifulSoup Id获取元素信息内容请搜索我们以前的文章或继续浏览下面的相关文章

  • python实现对svn操作及信息获取

    目录 一.实现效果 二.完整代码 三.结果展示.代码解析 1.上述代码最终会有两个输出展示 2.代码解析 一.实现效果 1.通过python获取路径下所有文件的svn状态 2.通过python对svn进行"提交.删除.锁.解锁.删除等操作" 3.通过svn打开小乌龟界面 二.完整代码 """ SVN状态对照表 """ class FileState: Normal = 0 # 000000 正常在svn管理下的最新的文件 Re

  • Python如何获取模块中类以及类的属性方法信息

    目录 一.sys.modules模块 二.inspect模块 三.python获取模块中所有类的实例 总结 一.sys.modules模块 sys.modules是一个全局字典,python启动后就将该字典加载在内存中,每当导入新的模块时sys.modules都将记录这些导入模块.字典sys.modules对于加载模块起到了缓冲的作用. sys.modules拥有字典所拥有的一切方法.如: import sys print(sys.modules[__name__]) print(sys.mod

  • Python爬虫获取基金变动信息

    目录 1 前言 2 抓取变动信息 2.1 基金的变动信息获取 2.2 基金阶段信息的抓取 3 最终结果展现 1 前言 前面文章Python爬虫获取基金列表.Python爬虫获取基金基本信息我们已经介绍了怎么获取基金列表以及怎么获取基金基本信息,本文我们继续前面的内容,获取基金的变动信息.这次获取信息的方式将组合使用页面数据解析和api接口调用的方式进行. 2 抓取变动信息 我们通过观察基金基本信息页面,我们可以发现有关基金变动信息的页面可以包含以下4个部分: 接下来说一下我们抓取数据的思路,在第

  • Python爬虫获取基金基本信息

    目录 1 前言 2 如何抓取基本信息 3 xpath 获取数据 4 bs4 获取数据 5 最终结果展现 1 前言 上篇文章Python爬虫获取基金列表我们已经讲述了如何从基金网站上获取基金的列表信息.这一骗我们延续上一篇,继续分享如何抓取基金的基本信息做展示.展示的内容包括基金的基本信息,诸如基金公司,基金经理,创建时间以及追踪标.持仓明细等信息. 2 如何抓取基本信息 # 在这里我就直接贴地址了,这个地址的获取是从基金列表跳转,然后点基金概况就可以获取到了. http://fundf10.ea

  • Python爬虫获取基金净值信息详情

    目录 1 前言 2 获取基金净值 3 数据库结构设计 4 如何进行数据存储 5 总结 1 前言 前面的文章中我们已经获取到了基金的阶段变动信息和ETF信息的获取,那么在本章中,我们将继续前面的内容,获取基金的价格信息,并且把之前的抓取到的数据存入到数据库中,方便我们进行后续的分析操作. 2 获取基金净值 获取基金的净值信息,也就是基金的最近一个交易日的价格,如下图所示,展示了单位净值更新的日期,价格以及涨跌幅度信息.顺便我们也获取一下基金的规模信息,后续选择到同类基金不知道怎么去选择的时候,可以

  • 基于Python实现最新房价信息的获取

    整个数据获取的信息是通过房源平台获取的,通过下载网页元素并进行数据提取分析完成整个过程 导入相关的网页下载.数据解析.数据处理库 from fake_useragent import UserAgent # 身份信息生成库 from bs4 import BeautifulSoup # 网页元素解析库 import numpy as np # 科学计算库 import requests # 网页下载库 from requests.exceptions import RequestExceptio

  • 基于Python编写一个爆炸信息窗口脚本

    目录 前言 爆炸信息窗口 设计思路 模块准备 删除好友警告 源代码 批量获取表情包 前言 Hello!大家好,有好几天没有跟大家见面咯~不知道大家是否在等待<小玩意儿>专栏的更新呢 上一篇的文章[老师见打系列]:我只是写了一个自动回复讨论的脚本~ 感觉挺受大伙的喜欢的呢,非常感谢各位兄弟给哥们顶上热榜,你们的支持就是我更新的动力 所以这几天我就在想是否继续往[老师见打系列]更新文章,想出一些能让”老师见打“的idear,当然,我并不是要故意惹老师生气的哈…… 直到前天,突然想写点什么,于是打开

  • 基于Python实现船舶的MMSI的获取(推荐)

    目的 工作中遇到一个需求,通过需要通过网站查询船舶名称得到MMSI码,网站来自船讯网. 分析请求 根据以往爬虫的经验,打开F12,通过输入船舶名称,观察发送的请求,发现返回数据的网址 本身网址是一个get请求,直接用这个网址请求,也能返回数据,即网址本身并没有加密,这就简单许多,直接通过改变参数,就能实现数据的获取,马上开始动手 编写代码 代码中,通过request发送请求,为了不给服务器造成太大压力,每隔0.5秒发送一个请求,因为会出现查询不到的情况,通过exception判断,数据结果一是通

  • 基于Python实现简易学生信息管理系统

    目录 一.系统简介 二.步骤分析 三.需求实现 四.具体实现 4.1 添加学生信息的函数 4.2 删除学生信息的函数 4.3 修改学生信息的函数 4.4 查询学生信息的函数 4.5 显示所有学生信息 五.运行效果 六.完整代码 一.系统简介 实现一个学生信息的管理系统:主要功能有: 添加学生信息 删除学生信息 修改学生信息 查询学生信息 显示学生信息 退出当前系统 二.步骤分析 显示功能界面 用户输入功能序号 对不同序号的功能实现具体函数(3.1 定义函数.3.2 调用函数) 三.需求实现 显示

  • 基于Python获取照片的GPS位置信息

    这篇文章主要介绍了基于Python获取照片的GPS位置信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 昨天听人说,用手机拍照会带着GPS信息,原来没注意过这个,因此查看下并使用代码获取照片里的GPS信息 查看图片文件属性 说明: 一般手机拍照时默认会打开地理位置开关 经过压缩后,通常会将GPS信息压缩掉 EXIF 可交换图像文件常被简称为EXIF(Exchangeable image file format),是专门为数码相机的照片设定的,

  • 基于Python获取亚马逊的评论信息的处理

    目录 一.分析亚马逊的评论请求 二.获取亚马逊评论的内容 三.亚马逊评论信息的处理 四.代码整合 4.1代理设置 4.2while循环翻页 总结 上次亚马逊的商品信息都获取到了,自然要看一下评论的部分.用户的评论能直观的反映当前商品值不值得购买,亚马逊的评分信息也能获取到做一个评分的权重. 亚马逊的评论区由用户ID,评分及评论标题,地区时间,评论正文这几个部分组成,本次获取的内容就是这些. 测试链接:https://www.amazon.it/product-reviews/B08GHGTGQ2

  • 基于python 微信小程序之获取已存在模板消息列表

    前言: 为了获取一定高级操作,如:微信模板消息(xiao,xin)推送,把消息推送给用户,或者是获取用户授权信息都需要用到access token,有效期为两个小时? 过了两个小时怎么办?重新获取,来,代码撸起走,啥女朋友没有? 获取小程序对应的access token def get_wx_token(): url = "https://api.weixin.qq.com/cgi-bin/token?" try: respone = requests.get(url, params=

  • 如何基于python操作excel并获取内容

    这篇文章主要介绍了如何基于python操作excel并获取内容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 背景:从excel表中获取请求url.请求数据.请求类型.预期结果 因此,需要学会如何使用python从excel获取这些信息 #coding=utf-8 import xlrd #创建对象时,获取对应excel 表格 #读取Excel行数 #获取单元格内容 class OperationExcel: def __init__(self

  • 基于python制作简易版学生信息管理系统

    一.前言 本篇博客对于文件操作.字典.列表.匿名函数以及sort()等内置函数进行了系统的整理操作,以设计一个学生信息管理系统的形式展示,具体概念方法等会在代码后进行分析讲述,请读者仔细分析每一处解析,对于基础巩固将会有很大的帮助,其中还有每一块代码的设计思路图,逻辑分析会有一定的提升. 二.需求分析 本程序需要用到os模板首先导入,并命名要存储信息的文件 import os File_Object_Name = 'Student_Inforation.txt' 三.主函数 def Main()

  • Python 基于Selenium实现动态网页信息的爬取

    目录 一.Selenium介绍与配置 1.Selenium简介 2. Selenium+Python环境配置 二.网页自动化测试 1.启动浏览器并打开百度搜索 2.定位元素 三.爬取动态网页的名人名言 1. 网页数据分析 2. 翻页分析 3.爬取数据的存储 4. 爬取数据 四.爬取京东网站书籍信息 五.总结 一.Selenium介绍与配置 1.Selenium简介 Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具.Selenium测试直接运行在浏览器中,可以

随机推荐