返回顶部
首页 > 资讯 > 后端开发 > Python >如何用Python获取成都租房信息
  • 281
分享到

如何用Python获取成都租房信息

2023-06-02 04:06:08 281人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章将为大家详细讲解有关如何用python获取成都租房信息,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。信息数据的获取,这里首先收集赶集网和自如网的信息。 赶集网信息获取I. 获取当页内

这篇文章将为大家详细讲解有关如何用python获取成都租房信息,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

信息数据的获取,这里首先收集赶集网和自如网的信息。

赶集网信息获取

如何用Python获取成都租房信息

I. 获取当页内容

这里的规则比较明显,获取网页内容用xpath解析即可,各个板块的信息都很容易获取,最后用列表保存并返回即可,首先循环出每个divs块,对里面的每个版块内容逐个获取

def get_this_page_gj(url, tmp): html = etree.HTML(requests.get(url).text) divs = html.xpath('//div[@class="f-list-item ershoufang-list"]') for div in divs: title = div.xpath('./dl/dd[@class="dd-item title"]/a/text()')[0] house_url = div.xpath('./dl/dd[@class="dd-item title"]/a/@href')[0] size = "、".join(div.xpath('./dl/dd[@class="dd-item size"]/span/text()')) address = '-'.join([ data.strip() for data in divs[0].xpath('./dl/dd[@class="dd-item address"][1]//a//text()') if data.strip() != '' ] ) agent_string = div.xpath('./dl/dd[@class="dd-item address"][2]/span/span/text()')[0] agent = re.sub(' ', '', agent_string) price = div.xpath('./dl/dd[@class="dd-item info"]/div[@class="price"]/span[@class="num"]/text()')[0] tmp.append([ title, size, price, address, agent, house_url ]) return tmp

II. URL构造

访问首页链接,获取总页数,按照url的访问规则构造url,调用获取当页数据的方法即可,这里的url都是以Http://cd.ganji.com/zufang/pn开头的,后面跟上网页的页码

def house_gj(headers): index_url = 'http://cd.ganji.com/zufang/' html = etree.HTML(get_html(index_url, headers)) total = html.xpath('//div[@class="pageBox"]/a[position() = last() -1]/span/text()')[0] result = [] for num in range(1, int(total) + 1): result += get_this_page_gj('http://cd.ganji.com/zufang/pn{}'.fORMat(num), []) print('完成读取第{}页/赶集网'.format(num)) return result

2 .

这里和赶集网类似,结构也相似,同样的获取方式,我们也抓取基础信息加url链接,区别在于这里的价格可能不太好获取,并不是直接显示,而是以图片+偏移量的形式展示

如何用Python获取成都租房信息

价格获取

每个数字对应一张图片,图片中的数字会根据style中设置的偏移去原图中获取,每页的原图也不尽相同,所以处理起来比较麻烦

如何用Python获取成都租房信息

如何用Python获取成都租房信息

这里我们仔细留心的会发现其实每个数字间的间距是一样的,可以自己在页面上更改数值查看规律,每个数字间的距离是21.4px,从原图的左边开始做偏移,根据偏移确定对应的数字,返回的数字下标 = |偏移量/21.4|,当然这里根据页面图片、内容等元素会有微小的误差,但都是极小的误差了,最后取个整去原图的数字列表中取得对应下标的值即可,这里我们用到tesseract来对图片进行解析

............price_strings = div.xpath('./div[@class="info-box"]/div[@class="price"]/span[@class="num"]/@style')offset_list = []for data in price_strings: offset_list.append(re.findall('position: (.*?)px', data)[0])style_string = html.xpath('//div[@class="info-box"]/div[@class="price"]/span[@class="num"]/@style')[0]pic = "http:" + re.findall(r'background-image: url\((.*?)\);.*?', style_string)[0]price = get_price_zr(pic, offset_list)def get_price_zr(pic_url, offset_list): ''' 这里的index保存所有数字的下标值,等待图片解析完成获取对应下标的价格数字 ''' index, price = [], [] with open('pic.png', 'wb') as f: f.write(requests.get(pic_url).content) code_list = list(pytesseract.image_to_string(Image.open('pic.png'))) for data in offset_list: index.append(int(math.fabs(eval(data)/21.4))) for data in index: price.append(code_list[data]) return "".join(price)
  • pic_url是每页的原图地址,将之下载下来后用pytesseract解析,最后返回每个下标对应的数字所组成的新的数字字符串(价格),offset_list是获取的每个数字的偏移值组成的列表

自如网数据获取

这里和赶集网类似,结构也相似,同样的获取方式,我们也抓取基础信息加url链接,区别在于这里的价格可能不太好获取,并不是直接显示,而是以图片+偏移量的形式展示

如何用Python获取成都租房信息

I. 价格获取

每个数字对应一张图片,图片中的数字会根据style中设置的偏移去原图中获取,每页的原图也不尽相同,所以处理起来比较麻烦

如何用Python获取成都租房信息

如何用Python获取成都租房信息

这里我们仔细留心的会发现其实每个数字间的间距是一样的,可以自己在页面上更改数值查看规律,每个数字间的距离是21.4px,从原图的左边开始做偏移,根据偏移确定对应的数字,返回的数字下标 = |偏移量/21.4|,当然这里根据页面图片、内容等元素会有微小的误差,但都是极小的误差了,最后取个整去原图的数字列表中取得对应下标的值即可,这里我们用到tesseract来对图片进行解析

............price_strings = div.xpath('./div[@class="info-box"]/div[@class="price"]/span[@class="num"]/@style')offset_list = []for data in price_strings: offset_list.append(re.findall('position: (.*?)px', data)[0])style_string = html.xpath('//div[@class="info-box"]/div[@class="price"]/span[@class="num"]/@style')[0]pic = "http:" + re.findall(r'background-image: url\((.*?)\);.*?', style_string)[0]price = get_price_zr(pic, offset_list)def get_price_zr(pic_url, offset_list): ''' 这里的index保存所有数字的下标值,等待图片解析完成获取对应下标的价格数字 ''' index, price = [], [] with open('pic.png', 'wb') as f: f.write(requests.get(pic_url).content) code_list = list(pytesseract.image_to_string(Image.open('pic.png'))) for data in offset_list: index.append(int(math.fabs(eval(data)/21.4))) for data in index: price.append(code_list[data]) return "".join(price)
  • pic_url是每页的原图地址,将之下载下来后用pytesseract解析,最后返回每个下标对应的数字所组成的新的数字字符串(价格),offset_list是获取的每个数字的偏移值组成的列表

II. 获取当页数据

这里和赶集网类似,我们构造获取每页数据的函数,之后调用函数传入每页的url即可,这里可以关注一下xpath的扩展用法(contains函数)和正则获取原图链接

def get_this_page_zr(url, tmp): html = etree.HTML(requests.get(url).text) divs = html.xpath('//div[@class="item"]') for div in divs: if div.xpath('./div[@class="info-box"]/h6/a/text()'): title = div.xpath('./div[@class="info-box"]/h6/a/text()')[0] else: continue link = 'http:' + div.xpath('./div[@class="info-box"]/h6/a/@href')[0] location = div.xpath('./div[@class="info-box"]/div[@class="desc"]/div[@class="location"]/text()')[0] area = div.xpath('./div[@class="info-box"]/div[@class="desc"]/div[contains(text(), "㎡")]/text()')[0] price_strings = div.xpath('./div[@class="info-box"]/div[@class="price"]/span[@class="num"]/@style') offset_list = [] for data in price_strings: offset_list.append(re.findall('position: (.*?)px', data)[0]) style_string = html.xpath('//div[@class="info-box"]/div[@class="price"]/span[@class="num"]/@style')[0] pic = "http:" + re.findall(r'background-image: url\((.*?)\);.*?', style_string)[0] price = get_price_zr(pic, offset_list) tag = '、'.join(div.xpath('./div[@class="info-box"]//div[@class="tag"]/span/text()')) tmp.append([ title, tag, price, area, location, link ]) return tmp

III. url构造

原理同赶集网的一样,主要关注一下xpath的扩展用法position()=last()

def house_zr(headers): index_url = 'http://cd.ziroom.com/z/' html = etree.HTML(get_html(index_url, headers)) total = html.xpath('//div[@class="Z_pages"]/a[position()=last()-1]/text()')[0] result = [] for num in range(1, int(total) + 1): result += get_this_page_zr('http://cd.ziroom.com/z/p{}/'.format(num), []) print('完成读取第{}页/自如网'.format(num)) return result

关于如何用Python获取成都租房信息就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 如何用Python获取成都租房信息

本文链接: https://lsjlt.com/news/228698.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何用Python获取成都租房信息
    这篇文章将为大家详细讲解有关如何用Python获取成都租房信息,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。信息数据的获取,这里首先收集赶集网和自如网的信息。 赶集网信息获取I. 获取当页内...
    99+
    2023-06-02
  • Python怎么爬取城市租房信息
    这篇文章主要介绍了Python怎么爬取城市租房信息的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python怎么爬取城市租房信息文章都会有所收获,下面我们一起来看看吧。思路:先单线程爬虫,测试可以成功爬取之后再...
    99+
    2023-06-30
  • python如何进行爬取链家二手房租赁信息
    本篇文章给大家分享的是有关python如何进行爬取链家二手房租赁信息,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。大家在外打拼的时候都需要租房子住,于是大家就会上各种房子租赁的...
    99+
    2023-06-02
  • Python爬取城市租房信息实战分享
    目录一、单线程爬虫二、优化为多线程爬虫三、使用asyncio进一步优化四、存入Mysql数据库(一)建表(二)将数据存入数据库中 五、最终效果图 (已打码)思路:先单线程爬...
    99+
    2024-04-02
  • python如何获取对象信息
    这篇文章主要讲解了“python如何获取对象信息”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python如何获取对象信息”吧!1、获取对象类型,基本类型可以用type()来判断。>&...
    99+
    2023-06-20
  • 基于Python实现最新房价信息的获取
    整个数据获取的信息是通过房源平台获取的,通过下载网页元素并进行数据提取分析完成整个过程 导入相关的网页下载、数据解析、数据处理库 from fake_useragent impor...
    99+
    2024-04-02
  • Python如何使用psutil获取系统信息
    三、psutil用Python来编写脚本简化日常的运维工作是Python的一个重要用途。在Linux下,有许多系统命令可以让我们时刻监控系统运行的状态,如ps,top,free等等。要获取这些系统信息,Python可以通过subproces...
    99+
    2023-05-15
    Python psutil
  • python如何获取服务器硬件信息
    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 #!/usr/bin/env python # -*- coding: utf-8 -*- import rlcom...
    99+
    2022-06-04
    硬件 服务器 信息
  • Hardware_Info.vbs如何获取硬件信息
    这篇文章给大家分享的是有关Hardware_Info.vbs如何获取硬件信息的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。代码如下:'Hardware_Info.vbs v1.1 BY: fastslzO...
    99+
    2023-06-08
  • Laravel如何获取模型信息
    本篇内容主要讲解“Laravel如何获取模型信息”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Laravel如何获取模型信息”吧!Laravel 模型信息 是 Spatie 的一个包,用于获取有...
    99+
    2023-07-04
  • 如何获取AFP服务信息
    这篇文章主要介绍如何获取AFP服务信息,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!获取AFP服务信息如果苹果系统开放TCP 548端口,说明其开启了AFP服务。这个时候,可以使用Nmap的afp-serverinf...
    99+
    2023-06-04
  • 微信小程序如何获取用户信息
    自我介绍 我是IT果果日记,微信公众号请搜索 IT果果日记 一个普通的技术宅,定期分享技术文章,欢迎点赞、关注和转发,请多关照。 微信小程序用户基本信息有哪些? 除了基本信息,微信还会提供openId和union...
    99+
    2023-09-05
    微信小程序 小程序 微信 Powered by 金山文档
  • 如何使用phonegap获取位置信息
    这篇文章主要介绍如何使用phonegap获取位置信息,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!实例如下:<!DOCTYPE html>  <...
    99+
    2024-04-02
  • 小程序如何获取用户信息
    这篇文章主要为大家展示了小程序如何获取用户信息,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“小程序如何获取用户信息”这篇文章吧。获取用户信息,withCredentials 为 true 时需要先...
    99+
    2023-06-26
  • Python使用psutil获取系统信息
    psutil模块 用Python来编写脚本简化日常的运维工作是Python的一个重要用途。在Linux下,有许多系统命令可以让我们时刻监控系统运行的状态,如ps,top,free等等...
    99+
    2024-04-02
  • 解决在Python中如何获取证书信息
    使用OpenSSl from OpenSSL import crypto # path表示证书路径,file_name表示证书文件名 cert_file = '/path/file_name/' cert_file = '/pa...
    99+
    2023-01-31
    证书 信息 Python
  • python如何利用traceback获取详细的异常信息
    除了使用 sys.exc_info() 方法获取更多的异常信息之外,还可以使用 traceback 模块,该模块可以用来查看异常的传播轨迹,追踪异常触发的源头。 try: 1/0 except E...
    99+
    2022-06-02
    python报错traceback python traceback python获取异常信息
  • VB.NET中如何获取硬盘信息
    VB.NET中如何获取硬盘信息,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。VB.NET获取硬盘信息之一:用API函数GetDiskFreeSpaceEx获取磁...
    99+
    2023-06-17
  • php mysqli错误信息如何获取
    这篇文章主要介绍“php mysqli错误信息如何获取”,在日常操作中,相信很多人在php mysqli错误信息如何获取问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php mysqli错误信息如何获取”的疑...
    99+
    2023-06-29
  • java如何获取gps定位信息
    在Java中获取GPS定位信息,可以使用Java提供的定位API或通过第三方库来实现。1. 使用Java定位API:Java提供了j...
    99+
    2023-09-14
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作