Python爬取武汉店铺出租转让信息

Python爬取武汉店铺出租转让信息

摘要:由于有亲戚想到武汉发展,开个店面做点小生意,实地考察的效率不算太高,于是乎就在网上收集相关的转让信息,做第一步筛选,希望能够起到一些作用~
技术组合:requests + BeautifulSoup + json

  1. 爬虫第一步是找网站,找规律
    这里我选择的 今天信息网
    1
    分析其url不难发现其中包含了许多的信息,url:http://wh.jintianxinxi.com/zhuanrang/store_type-1-acreage-1~30-page-1/
    一共有390条信息,他们不可能把390条信息放在一张网页上,于是分成了15页
    其中的 page-1 为我们很好的指明了方向
    这样就可以很容易的通过循环完成对15个网页的信息爬取

  2. 解析数据用的是 BeautifulSoupselec() 函数
    其具体操作流程如下:
    选取需要的信息,审查元素,然后复制选择器
    1
    第二步就是将该字符串作为 selec() 函数的传递参数了,具体可以参考
    https://blog.csdn.net/amao1998/article/details/82663978
    讲解的还是比较细致

  3. json 格式保存数据,先将数据以 字典 的格式进行存储,然后转化成 json 格式,以追加的形式打开文件,进行写入。

附上源码:

import requests
from bs4 import BeautifulSoup
import json

#避免解析出来的信息为空,从而抛出错误
def transText(text):
    if text!=[]:
        text=text[0].getText()
    else:
        text = ''
    return text

#以json格式保存数据
def save_info(info):
    with open("商铺信息.json",'a',encoding='utf-8') as f:
        f.write(json.dumps(info,ensure_ascii=False,indent=4))

#发出请求,粗加工返回的内容
def get_url(url,headers):
    response = requests.get(url, headers=headers)
    #通过response.apparent_encoding分析页面可能的编码方式,然后编码
    response.encoding = response.apparent_encoding
    html = response.text
    return html

#使用BeautifulSoup解析数据
def parse_soup(html):
    soup = BeautifulSoup(html, 'html.parser')
    shop_list = soup.select('body > div.body1000 > div.bodybgcolor > div > div.body1000 > div.infolists > div.section > ul > div ')
    for i in range(1,len(shop_list)):
        shop = shop_list[i]
        info = {}
        info["标题"] = transText(shop.select('div > div.media-body-title > a'))
        info["简介"] = transText(shop.select('div > div.typo-small'))
        info["地区"] = transText(shop.select('div > div.typo-smalls > font.xx1'))
        info["类型"] = transText(shop.select('div > div.typo-smalls > font.xx2'))
        info["面积"] = transText(shop.select('div > div.typo-smalls > font.xx3'))
        info["租金"] = transText(shop.select('div > div.typo-smalls > font.xx4'))
        info["位置"] = transText(shop.select('div > div.typo-smalls > font.xx6'))
        info["转让费"] = transText(shop.select('div > div.typo-smalls > font.xx7'))

        save_info(info)

if __name__ == "__main__":
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
    for j in range(1,16):
        print('***第{}页***'.format(j))
        url = "http://wh.jintianxinxi.com/zhuanrang/store_type-1-acreage-1~30-page-{}/".format(j)
        html = get_url(url,headers)
        parse_soup(html)
    print("OVER!")

最终效果图:
1
1
1
1

一共390条信息,一条信息占据9行,390*9=3510,至此,所有信息采集完成,完结撒花~

### 安居客出租房(武汉为例)爬虫+数据分析+可视化 这个爬虫是我前段时间在淘宝上做单子的时候遇见的一个客户需求。本来以为就是一个简单的爬虫项目。但后面客户加了数据清洗和数据分析的要求。而后又加了要详细代码解释的需求等等。直到最后客户坦白说这是他们大专的毕设.......但是这个单子坐下来只有200左右,我想了一下,感觉好亏啊。在淘宝上随便找一个做毕设的都要好多钱的,而且客户本身的代码能力、数学、逻辑能力都很差,导致我每行都给注释以及看不懂,在我交付代码后又纠缠了我一个多礼拜。反正总体做下来的感觉就是烦躁。头一次感觉到了客户需求变更带来的巨大麻烦。 总之这是一次不是很愉快的爬虫经历。但是作为我写爬虫以来注释最详细的一次,以及第一次真正使用像matplotlib这种数据分析库的代码,我认为还是有必要分享出来给大家当个参考的(PS:大佬轻拍~)。爬虫本身几乎没有什么难度,写的也比较乱,敬请见谅。 **功能** 爬取安居客上的出租信息武汉地区的),并通过爬取的数据进行数据清洗以及数据分析。给出四个不同层面的可视化图。最终结果如下图所示: ![Image text](https://raw.githubusercontent.com/srx-2000/git_spider/master/anjuke_room_rent_info/result/1.png) ![Image text](https://raw.githubusercontent.com/srx-2000/git_spider/master/anjuke_room_rent_info/result/2.png) ![Image text](https://raw.githubusercontent.com/srx-2000/git_spider/master/anjuke_room_rent_info/result/3.png) ![Image text](https://raw.githubusercontent.com/srx-2000/git_spider/master/anjuke_room_rent_info/result/4.png) **环境** 1. Windows 10 2. python3.7 **使用方法** 首先声明该爬虫由于是特定情况下写的,所以本身的通用性特别差,仅可以对安居客网站上的武汉出租信息进行爬取,且需要自己手动更新cookie。同时在对数据进行分析及可视化的时候由于也是特别针对武汉出租房的进行的,所以针对性也比较强。如果别的需求需要自己进行更改。 1. 访问[安居客网址](https://wuhan.anjuke.com/),获取cookie。 > tip:获取cookie的方法可根据[此链接](https://jingyan.baidu.com/article/5d368d1ea6c6e33f60c057ef.html) 2. 在项目中找到`spider.py`的文件,将第12行的cookie换成你自己的cookie。 3. 运行`spider.py`,获取房源信息。运行后应会产生一个`武汉出租房源情况.csv`的文件。此文件为我们从安居客上爬取的房源信息,其中包含`房屋住链接、房屋描述、房屋地址、房屋详情(户型)以及经纪人、房屋价格`五个属性。 4. 在获取了数据之后我们运行`matplotlib.py`文件。进行数据清洗,分析,可视化。运行后即可获得**功能**中展示四个图片。 **技术栈** 1. request 2. parsel 3. pandas 4. matplotlib **进步(相比之前)** 此次爬虫相比之前的技术上可以说有减无增。但其中注释相当详细,可谓是每行代码都有注释。所以对于初学者应该有一些用处。同时使用matplotlib进行了数据分析可视化等。对于数据处理的代码的注释也是几乎每行都有注释的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值