python 爬虫基础-二手房信息获取为例

本文主要是笔者为了学习python数据分析而做的一些练习,主要是利用网络爬虫获取的相关数据对上海市各个行政区的房价的性价比进行简要分析。

整个项目主要分为三个大的部分:数据的获取,数据的清洗,数据的分析

第一部分:数据的获取

本文的数据获取都是通过python相关爬虫工具包BeautifulSoup,在相关的网页和公开的API上获取的客观数据,分别包括以下两种:
(1)百度地图API上获取的数据,具体有上海市每个行政区的医院、小学、初中、公园、体育场、购物、地铁站、小区的数量。
(2)安居客网页上海二手房的相关数据,主要包括房间的价格、面积、户型等。

本文的python爬虫主要分为三个步骤:网页的获取——》网页数据的解析——》数据的储存
(1)本文数据的获取主要利用python的requests相关工具包,获取到网页的整个内容
(2)本文数据的解析主要利用python的BeautfulSoup和json相关工具包进行内容的解析,
其中百度API获的数据是json格式,采用joson.load()方法进行解析,而安居客网页的数 据则是HTML 格式,使用了BeautfulSoup的相关方法解析
(3)数据获取之后,因为本文的数据量不大,所以直接保存为本地的csv文件

主要的python代码如下所示:

#获取百度地图API的相关数据的爬虫代码

    import requests

    from bs4 import BeautifulSoup

    import json

    headers={'User-Agent':'Mozilla/3.0 (Linux; Android 8.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Mobile Safari/537.36'}

    for i in range(1,12):

    pa={'q':'','region':'上海市','scop':'2','page_size':20,'page_num':i,'output':'json','ak':'8KnqTdCS7APBHAmnOCKfvWiOkCzoAPAx'}

    r =requests.get("http://api.map.baidu.com/place/v2/search",params=pa,headers=headers)

    decodejson = json.loads(r.text)

print("正在获取第%d页" % i)

for each in decodejson['results']:

    hospital_name=each['name']

    hospital_area=each['area']

    with open('desktop/huoguodian.csv','a+',encoding='gbk') as file:

        file.write(hospital_name+','+hospital_area+'\n')

#获取安居客上海二手房价相关数据的python爬虫代码

import requests

from bs4 import BeautifulSoup

import time

import re

headers={'User-Agent':'Mozilla/8.0 (Linux; Android 7.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Mobile Safari/537.36','cookie': 'aQQ_ajkguid=5C00162A-1B7A-7120-AD52-FE08A2D96F61; _ga=GA1.2.50999661.1582604990; 58tj_uuid=48ec3204-a7eb-442a-ba99-cc74cceb8edb; als=0; sessid=F04C1E27-F27D-A7CB-EF42-F073F7C96ED1; lps=http%3A%2F%2Fhf.anjuke.com%2Fsale%2F%7C; twe=2; wmda_uuid=0558e8d2183d2c798b98f2c3b681552c; wmda_new_uuid=1; wmda_visited_projects=%3B6289197098934; _gid=GA1.2.1611413650.1582947737; ajk_member_captcha=e5970910635e72147730f07b96444b57; isp=true; Hm_lvt_c5899c8768ebee272710c9c5f365a6d8=1582962418; ctid=11; Hm_lpvt_c5899c8768ebee272710c9c5f365a6d8=1582962466; wmda_session_id_6289197098934=1582966320898-c2e4bd03-e6f9-4289; __xsptplusUT_8=1; init_refer=https%253A%252F%252Fshanghai.anjuke.com%252Fsale%252Fchongming%252Fp1%252F; new_uv=9; xzfzqtoken=hbHC%2FoyACNQofcmI%2BPpzK1CZs1ZCCnxeo7VbmksyJEQXKoHpip42xp0BO%2FIz8hHDin35brBb%2F%2FeSODvMgkQULA%3D%3D; browse_comm_ids=287563%7C373304; propertys=wq3sya-q6ggon_wpk4aw-q6gbla_w4p7w9-q6ga5l_vp567s-q68q25_; _gat=1; new_session=0; __xsptplus8=8.9.1582966321.1582966391.3%232%7Csp0.baidu.com%7C%7C%7C%25E5%25AE%2589%25E5%25B1%2585%25E5%25AE%25A2%7C%23%23PH2eSa7XGWd98maMBKXEiaIMbbq7XhkC%23'}
#area_list=['pudong','minhang','baoshan','xuhui','songjiang','jiading','jingan','putuo','yangpu','hongkou','changning','huangpu','qingpu','fengxian','jinshan','chongming']
area_list=['yangpu','hongkou','changning','huangpu','qingpu','fengxian','jinshan','chongming']#area_list=['pudong','minhang']
  a=[]

  b=[]

  c=[]

  d=[]

for k in range(0,len(area_list)):

for i in range(0,49):

    link='https://shanghai.anjuke.com/sale/'+area_list[k]+'/p'+str(i)

    #proxies 设置代理ip

    #proxies1={'http':'58.17.125.215:53281','https':'58.17.125.215:53281'}

    r=requests.get(link,headers=headers,proxies=proxies1)

    print("正在获取 %s第%d页" % (area_list[k],i))

   # 调用time函数 暂停几秒 防止反爬虫

     time.sleep(10)

    soup=BeautifulSoup(r.text)

    #print(r.text)

    list_house1 = soup.find_all('div',class_="house-details")

    for house in list_house1:

        House_describe = house.find('div',class_="details-item").text.strip()

        House_address = house.find('span',class_ = "comm-address").text.strip()

        a.append(House_describe)

        b.append(House_address)

    list_house2 = soup.find_all('div',class_='pro-price')

    for house in list_house2:

        House_price_det = house.find('span',class_="price-det").text.strip()

        House_price_unit = house.find('span',class_="unit-price").text.strip()

        c.append(House_price_det)

        d.append(House_price_unit)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容