Python爬虫实战爬取租房网站-链家上海区域信息(过程超详细)
内容可能有点啰嗦 大佬们请见谅 后面会贴代码 带火们有需求的话就用吧
正好这几天做的实验报告就直接拿过来了,我想后面应该会有人用的到吧.
自己学着分析网址的话链家这个租房网站其他地区的也可以爬大家不妨试试
任务目的:从链家上爬取上海地区的租房信息
1.url分析
https://sh.lianjia.com/zufang/这是网站的首页
网站的第二页https://sh.lianjia.com/zufang/pg2/#contentList
此时通过对比,可以发现将/pg2/中的2换成1那时网站内容就是第一页的内容,后面的#contentList对网页内容没有影响这里我们就直接删除了。
我这里拿静安区为例
首页网址:https://sh.lianjia.com/zufang/jingan/。第二页: https://sh.lianjia.com/zufang/jingan/pg2/
2.页面元素分析
(1) 使用chrome浏览器的检查功能,点击 左侧的小箭头来分析页面。
我们将鼠标放到第一个房源信息那,可以看到里面的内容都是在content__list—item这个类里面
第二个房源的话也是在这个类里面,后面的内容有些不同而已
我们往上翻发现这些房源信息都在content__list这个类中
所以我们要的信息从这里面获取就行不需要再从整个页面中查找,先找大标签(这里就是这个content__list),再找其中的小便签。
我们这里把要获取的数据都放入infos里面
infos = soup.find('div',{
'class':'content__list'}).find_all('div',{
'class':'content__list--item'})`
(2) 分析小标签里要提取的元素;
拿名称来举例,它是在之前找的小便签里的content__list–item–title twoline类的a标签中
name = info.find('p',
{
'class': 'content__list--item--title twoline'}).find(
'a').get_text().strip()
我们只需获取里面的文本信息就行了所以这里我们用到了get_text()函数,strip()用来消除左右空格
当然,我们发现content__list–item–title twoline类是在content__list–item—main里面的,这里我们可以在检查里面用ctrl+f来搜索看看content__list–item—main类里是否有第二个content__list–item–title twoline类,如果重复就要另外分析。这边并没有第二个content__list–item–title twoline类,就不需要考虑了。
(1of30一个页面30个信息还有29个content__list–item–title twoline是下面房子里面的)
价格这边同样的方法不做赘述
获取具体地址,面积,门朝向以及户型的时候我们发现它是在同一个类里面,它们用’ / '做了分隔。这边我们可以用split()函数来切割,这样就能解决这个问题。
我们将文本放入变量mix中
mix = info.find('p', {
'class': 'content__list--item--des'