最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Python爬取链家海量二手房房产信息并打包成exe软件

    正文概述 掘金(python)   2020-12-24   596

    电子书籍、项目源码分享。一起交流学习,一起进步! Python爬取链家海量二手房房产信息并打包成exe软件

    前言

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

    基本开发环境

    • Python 3.6

    • Pycharm

    相关模块使用

    import requestsimport parselimport csvimport concurrent.futuresimport urllib
    

    目标网页分析

    Python爬取链家海量二手房房产信息并打包成exe软件

    点击二手房,即可进入。

    Python爬取链家海量二手房房产信息并打包成exe软件

    看到这价格,只想说一句,真特么贵

    列表页

    Python爬取链家海量二手房房产信息并打包成exe软件

    详情页

    Python爬取链家海量二手房房产信息并打包成exe软件

    网页是静态数据,请求url即可获取网页源代码,然后再解析数据即可,难度不大

    Python爬取链家海量二手房房产信息并打包成exe软件

    获取数据内容:

    • 总售价,

    • 单价,

    • 建筑面积,

    • 所在楼层,

    • 房屋朝向,

    • 房屋户型,

    • 装修情况,

    • 配备电梯,

    • 建筑结构,

    • 小区名称,

    • 交易权属,

    • 房租用途

    运行效果图

    Python爬取链家海量二手房房产信息并打包成exe软件

    Python爬取链家海量二手房房产信息并打包成exe软件

    需要注意的点:

    Python爬取链家海量二手房房产信息并打包成exe软件

    其实链接地址是

    'https://bj.lianjia.com/ershoufang/rs%E7%8F%A0%E6%B1%9F%E7%BD%97%E9%A9%AC%E5%98%89%E5%9B%AD%E8%A5%BF%E5%8C%BA/'
    
    • 需要输入搜索内容需要转码

    这个为例:

    Python爬取链家海量二手房房产信息并打包成exe软件

    如何打包成exe软件:

    1、 在cmd命令行中安装 pyinstaller 模块 pip install pyinstaller

    (windows键 + R 输入cmd 即可)

    Python爬取链家海量二手房房产信息并打包成exe软件

    Python爬取链家海量二手房房产信息并打包成exe软件

    我这里已经是安装好的

    2、打包exe ,命令 pyinstall -F xxxx.py (文件名)

    • 同样在cmd当中,先cd选择到py文件所在的路径 输入命令即可打包。

    • 在文件所在文件夹中,按住shift + 鼠标右键,选择 在此处打开Powershell窗口,进入之后输入相关命令。

    为了方便我选择第二种。

    Python爬取链家海量二手房房产信息并打包成exe软件

    Python爬取链家海量二手房房产信息并打包成exe软件

    Python爬取链家海量二手房房产信息并打包成exe软件

    Python爬取链家海量二手房房产信息并打包成exe软件

    这样就打包成功了,关于打包exe 还有很多其他的内容,这里就不详聊了。

    3、exe运行效果

    Python爬取链家海量二手房房产信息并打包成exe软件

    输入想要爬取的城市、小区以及需要爬取多少页数据。

    当爬取完成之后可以选择是否继续爬取。

    4、可完善的地方。

    • 界面太丑了,可以选择自己写一个GUI界面。可使用TK 或者 QT

    • 可以分区域爬取,小区毕竟太少了,可以按照每个城市的区域去划分

    • 暂时没想到,欢迎大家留言讨论

    相关代码 #给你代码只会复制粘贴运行,没有任何实际意义

    • 获取网页源代码以及解析
    def get_response(html_url):    response = requests.get(url=html_url, headers=headers).text    return responsedef get_parsing(html_data):    selector = parsel.Selector(html_data)    return selector
    
    • 获取每个房源信息url
    def get_page_url(page_url):    html_data = get_response(page_url)    selector = get_parsing(html_data)    page_url = selector.css('.sellListContent li .title a::attr(href)').getall()    return page_url
    
    • 解析网页获取相关数据
    def main(url):    lis = get_page_url(url)    for li in lis:        html_data = get_response(li)        selector = get_parsing(html_data)        title = selector.css('.main::attr(title)').get()  # 标题        all_price = selector.css('div.price .total::text').get() + '万'  # 总价        one_price = selector.css('div.price .unitPriceValue::text').get() + '/平米'  # 单价        area = selector.css('div.area .mainInfo::text').get()  # 房屋面积        floor = selector.css('#introduction .base .content ul li:nth-child(2)::text').get()  # 房屋楼层        face = selector.css('#introduction .base .content ul li:nth-child(7)::text').get()  # 房屋朝向        unit_type = selector.css('#introduction .base .content ul li:nth-child(1)::text').get()  # 房屋户型        decoration = selector.css('#introduction .base .content ul li:nth-child(9)::text').get()  # 房屋装修        elevator = selector.css('#introduction .base .content ul li:nth-child(11)::text').get()  # 电梯        building = selector.css('#introduction .base .content ul li:nth-child(8)::text').get()  # 建筑结构        ownership = selector.css(            '#introduction .transaction .content ul li:nth-child(2) span:nth-child(2)::text').get()  # 交易权属        use = selector.css(            '#introduction .transaction .content ul li:nth-child(4) span:nth-child(2)::text').get()  # 房屋用途        community = selector.css('.aroundInfo .communityName .info::text').get()  # 小区名称        dit = {            '总价': all_price,            '单价': one_price,            '面积': area,            '楼层': floor,            '朝向': face,            '户型': unit_type,            '装修': decoration,            '电梯': elevator,            '建筑结构': building,            '交易权属': ownership,            '房屋用途': use,            '小区名称': community,            '详情页地址': li,        }        csv_writer.writerow(dit)        print(dit)
    
    if __name__ == '__main__':    while True:        city_word = input('请输入你要搜索的城市名字(如:北京,bj):')        key_word = input('请输入你要搜索的小区名字:')        key_page = int(input('请输入你要爬取多少页数据:'))        f = open('{}{}.csv'.format(city_word, key_word), mode='a', encoding='utf-8-sig', newline='')        csv_writer = csv.DictWriter(f,                                    fieldnames=['总价', '单价', '面积', '楼层', '朝向', '户型', '装修', '电梯', '建筑结构', '交易权属', '房屋用途',                                                '小区名称', '详情页地址'])        csv_writer.writeheader()        executor = concurrent.futures.ThreadPoolExecutor(max_workers=10)        for page in range(1, key_page + 1):            url = 'https://{}.lianjia.com/ershoufang/pg{}rs{}/'.format(city_word, page, key_word)            executor.submit(main, url)        executor.shutdown()        a = input('是否选择继续爬取(Yes or No):')        if a == 'Yes':            continue        else:            break
    

    代码会有报错,特意留的~

    #给你代码只会复制粘贴运行,没有任何实际意义


    起源地 » Python爬取链家海量二手房房产信息并打包成exe软件

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元