爬虫实战--- (6)链家房源数据爬取与分析可视化
2024-12-25 11:56
数据分析实战项⽬--链家租房数据可视化分析 导语:前⼏天舍友送了⼀本介绍的书籍,由此联想到,好久没有爬过⽹站了,但之前学的东西差不多全还给秦⽼板了(给我们上python的 ⽼师)。于是⽴马上⽹找了⼏篇博客,重温了⼀下⼏个包的知识点,动了⼀下⼩⼿,这不就有了等下要和你们讲的故事喽。 (⼀)项⽬介绍 (⼀)项⽬介绍 1. ⼯具 ⼯具 pycharm 2020.1.5 2. 内容 内容 本项⽬分为两部分: + 数据可视化分析 (1)爬⾍:⽤包爬取链家租房⽹页内容——BeautifulSoup解析——re正则表达式匹配我们需要的内容——sqlite3保存数据 (2)分析:pandas清洗分析数据——pyecharts进⾏可视化分析 (⼆)爬⾍部分 (⼆)爬⾍部分 ( (1)爬⾍第⼀步,了解我们将要爬取⽹页的信息 )爬⾍第⼀步,了解我们将要爬取⽹页的信息 如图所⽰:⼩框是链家⽹页租房的⽹址,⼤框是我们想要从⽹页中获取的内容。 由于链家的限制, 把页⾯往下拉到底部就可以看见,⼀次最多只能访问100页,⼀个页⾯有30套房,就是说,我们⼀次最多能看见 3000套房⼦的信息。但是实际上的租房房源远不3000。怎么办呢?我们可以通过增加限制条件来获取到尽量全的房源。 现在问题⼜来了,按区域爬⾍,区域我们是确定知道的,因为北京统共就那么⼏个区,但是⽹址中还需要知道各个区域的页数,各个 区域的页数⼜不相同,那么各个区域分别有多少页呢?这⾥我⽤了⼀个⽐较笨的⽅法,但⽅法虽笨,实现还是挺简单的,就是先爬取每个区 域的第⼀页,页⾯的最后有显⽰最⼤⽹页数,由此我们就可以得到最⼤⽹页数。现在先Fn+F12⼀下来看看⽹页的html⽂件吧~ 从上图,我们可以看出页数的信息在div class="content__pg"下⾯的内容,由此我们可以据其写出正则匹配表达式,并在div class="content__pg"下⾯的内容找到最⼤页数。 本次爬⾍⽤的是requests包,⾸先构造⼀个响应头部header,⽤于伪装,然后构造get请求并发起,将爬取下来的数据存于html中, 详见代码ask_url函数。 在get_page函数中调⽤ask_url函数,循环爬取每个区的第⼀页,⼀边爬⼀边⽤BeautifulSoup解析,并在解析过的数据中,⽤ re.findall()在div class="content__pg"下⾯的内容匹配找出最⼤页数。get_page函数中⽤了两个for循环,⼀个调⽤regions中的区,然 后爬⾍,⼀个⽤来查找爬取内容的最⼤页数。(本次爬⾍的限制条件,即区域,只有13个,其他4个较为边缘的区没有计⼊) ( (2)正式爬取⽹页信息并解析匹配 )正式爬取⽹页信息并解析匹配 从上⾯,我们得到了每个区的页数,并保存于pagelist⾥⾯,返回。接下来,就要正式爬取我们想要的内容了。⾸先,设置⼀个空列 表来存放我们解析匹配后得到的数据。两个for循环,调⽤ask_url函数,才能得到regions⾥⾯所有区各⾃的页数的全部内容。 爬取⼀页内容,解析⼀页。 再⼀次Fn+F12,可以看见,我们想要获取的内容,都在div class_="content__list--item",我们先print⼀个或者多个解析过后的 soup,观察其结构和内容,可根据其中内容⽤re.compile()构造出我们所需内容的正则表达式,在这⾥就不⼀⼀展开了,有兴趣的uu找找 相关正则表达式的博客。 之后就开始匹配我们需要的内容,⽤re包⾥⾯的findall⽅法找出和正则表达式匹配的内容,并先将内容暂时存在⼀个data列表⾥,等 到所有想要得到的内容都匹配完成之后,再加⼊datalist列表中。这⼀步,我们会得到所有想要的信息。 1 import requests 2 from bs4 import BeautifulSoup 3 import re 4 import sqlite3 5 import pandas as pd 6 7 def main(): 8 baseurl = 'https://bj.lianjia.com/zufang/' 9 pagelist = get_page(baseurl) #得到每个区的页数 10 datalist = get_data(baseurl, pagelist) #得到所有数据 11 dbpath = "zufang.db" 12 savedata_2_db(datalist, dbpath) #存⼊数据库 13 14 findpage = re.compile(r'data-totalpage="(d*)" data-ur') #构建正则匹配,最⼤页数 15 16 17 def get_page(baseurl): #找出每个
最新文章
媒介自助发布网站系统★收录容易-欢迎合作,发帖收录最好的网站
下一篇文章内容预览:对于有些站长来说,为了不让搜索引擎收录,会配置转载模式,也就是给文章添加属性。还有一种就是伪原创内容
关于举办2024年第五届全国电信和互联网行业信息通信信息化系统管理员职业技能竞赛的通知
各有关单位: 为深入贯彻党的二十大精神和习近平总书记对技能人才工作重要指示批示精神以及中共中央办公厅、国务院办公厅《关
构建高效、稳定和吸引人的网站,五个关键步骤,打造高效、稳定与吸引力俱佳的 *** 网站,五大关键步骤解析,5步打造高效、稳定与吸引力兼备的网站,关键步骤解析
创建一个成功且引人入胜的 *** 网站并非易事,但遵循以下五个关键步骤,可以显著提升其效率、稳定性及吸引力:,,1. 精心设计:
哪里能找到ai标题写作生成器?良心推荐这几款自用标题生成器
好不容易写好了文案,却因为标题没新意而被否?有时,想出一个既新颖又夺人眼球的标题往往比写文案本身还要困难。如果大家恰好面
OpenAI拟斥巨资“赎身” 摆脱非营利组织控制
IT之家12月19日消息,据《纽约时报》报道,OpenAI正在计划向其非营利组织支付数十亿美元,以完成公司从管理结构向盈利性公司的转
国内CRM系统排名
CRM(Customer Relationship Management)系统是现代企业管理必备的软件之一,通过对客户信息、销售机会、营销活动、服务支持
亚马逊广告课程,从青铜到王者一步一步进阶学习
亚马逊广告课程,从青铜到王者一步一步进阶学习课程大纲广告基础商品推广手动与自动亚马逊广告投放类型与广告推广位置-阿甘亚马
AI智能文案生成器:一键解决文章创作、营销推广、内容填充等多场景文案需求
在数字化时代的浪潮中内容创作与营销推广成为了企业竞争的关键因素。面对繁重的工作量和不断变化的市场需求高效地创作出优质文案
84坐标系、02坐标系、百度坐标之间相互转换算法
地图坐标系的转换原理涉及到不同坐标系之间的数学转换关系。常见的地图坐标系包括WGS84坐标系(国际标准的经纬度坐标系
如何进行杭州Google优化以提高网站排名?
现在,绝大多数的消费者都是通过搜索引擎来获取所需信息。Google搜索引擎是目前全球使用最广泛的搜索引擎之一。因此,对于杭州的
推荐文章