您当前的位置: 首页 >  Python

嗨学编程

暂无认证

  • 0浏览

    0关注

    1405博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Python爬取小猪短租全网数据

嗨学编程 发布时间:2019-08-02 15:01:02 ,浏览量:0

爬取时需要进行的操作:

    1:输入你是要爬取国内的还是海外的,1表示国内,2表示海外;
    2:然后输入你要爬取的城市名称,就可以了;

每个函数的功能:

    choose_area函数根据你输入的是国内还是海外,输出不同的区域名称
    url_list函数根据你输入的城市名称,来爬取城市有多少房源,来判断有几页数据,因为小猪短租网上面只显示13页数据,超过了的话页只显示13页的数据,所以做个判断就可以
    get_url函数根据你输入的城市名称和页码,来构建你输入的城市每页的url

    get_html函数就是获取每页的html数据
    get_zf_url函数根据每页的html数据来爬取每个租房的url链接
    get_zf_message函数,通过传入的租房url链接来获取每个租房的信息
'''
遇到不懂的问题?Python学习交流群:1136201545满足你的需求,资料都已经上传群文件,可以自行下载!
'''
import  re
import requests

url = 'http://jci.xiaozhustatic1.com/e17061601/xzjs?k=Front_Search&httphost=bj.xiaozhu.com'     #获取城市名称的链接

ser = input('输入你要查找的地区(1:国内;2:海外):')            #输入你你要查找是国内的短租房还是海外的短租房
html = requests.get(url).text       #通过上面提供的url来爬取每个省份的拼音

def choose_area():      #判断你需要查找的是国内的还是海外的,并输出相应的内容
    city_tup = re.compile('citys[[0-9]\d*]=new Array(.*?);').findall(html)
    #print(city_tup)
    for city_name in city_tup[29:]:
        #print(city_name)
        city_time = re.compile('[0-9]\d*:[0-9]\d*').findall(city_name)
        if ser == '1':
            if len(city_time) == 0:
                city = re.compile('[\u4E00-\u9FA5]+').findall(city_name)[0]     #城市名称
                city_jc = re.compile('[a-z]\w*').findall(city_name)[1]      #城市拼音
                city_zf = re.compile('[0-9]\d*').findall(city_name)[0]      #城市租房数量
                city_dic = {city:[city_jc,city_zf]}
                yield city_dic
            else:
                pass
        elif ser == '2':
            if len(city_time) != 0:
                city = re.compile('[\u4E00-\u9FA5]+').findall(city_name)[0]
                city_jc = re.compile('[a-z]\w*').findall(city_name)[1]
                city_zf = re.compile('[0-9]\d*').findall(city_name)[0]
                city_dic = {city: [city_jc, city_zf]}
                yield city_dic
            else:
                pass

def get_url(city_jc,page):  #提供省份的名称和页码来构建需要爬取的url
    url = 'http://{}.xiaozhu.com/search-duanzufang-p{}-0/'.format(city_jc,page)
    return url

#根据你提供的省份名称来判断,这个省份有多少房源,但是每个省份的房源只显示13页的数据,所有做个判断,超过了的话就只显示13页,没有超过的话就有几页就显示几页
def url_list(city_name):
    #city_name = input('输入你要查找的城市名称:')
    for city in choose_area():
        if city_name in city.keys():
            if int(int(city[city_name][1])/24) > 13:
                for page in range(1,14):
                    url = get_url(city[city_name][0],page)
                    yield url
            elif int(int(city[city_name][1])/24)             
关注
打赏
1663681728
查看更多评论
0.1611s