iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python爬虫之如何爬取我爱我家二手房数据
  • 829
分享到

Python爬虫之如何爬取我爱我家二手房数据

2023-06-15 06:06:15 829人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章给大家分享的是有关python爬虫之如何爬取我爱我家二手房数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、问题说明首先,运行下述代码,复现问题:# -*-coding:utf-8-*-im

这篇文章给大家分享的是有关python爬虫之如何爬取我爱我家二手房数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一、问题说明

首先,运行下述代码,复现问题:

# -*-coding:utf-8-*-import reimport requestsfrom bs4 import BeautifulSoupcookie = 'PHPSESSID=aivms4ufg15sbrj0qgboo3c6gj; HMF_CI=4d8ff20092e9832daed8fe5eb0475663812603504e007aca93e6630c00b84dc207; _ga=GA1.2.556271139.1620784679; gr_user_id=4c878c8f-406b-46a0-86ee-a9baf2267477; _dx_uzZo5y=68b673b0aaec1f296c34e36c9e9d378bdb2050ab4638a066872a36f781c888efa97af3b5; smidV2=20210512095758ff7656962db3adf41fa8fdc8ddc02ecb00bac57209becfaa0; yfx_c_g_u_id_10000001=_ck21051209583410015104784406594; __TD_deviceId=41HK9PMCSF7GoT8G; zufang_cookiekey=["%7B%22url%22%3A%22%2Fzufang%2F_%25E9%2595%25BF%25E6%2598%25A5%25E6%25A1%25A5%3Fzn%3D%25E9%2595%25BF%25E6%2598%25A5%25E6%25A1%25A5%22%2C%22x%22%3A%220%22%2C%22y%22%3A%220%22%2C%22name%22%3A%22%E9%95%BF%E6%98%A5%E6%A1%A5%22%2C%22total%22%3A%220%22%7D","%7B%22url%22%3A%22%2Fzufang%2F_%25E8%258B%258F%25E5%25B7%259E%25E8%25A1%2597%3Fzn%3D%25E8%258B%258F%25E5%25B7%259E%25E8%25A1%2597%22%2C%22x%22%3A%220%22%2C%22y%22%3A%220%22%2C%22name%22%3A%22%E8%8B%8F%E5%B7%9E%E8%A1%97%22%2C%22total%22%3A%220%22%7D","%7B%22url%22%3A%22%2Fzufang%2F_%25E8%258B%258F%25E5%25B7%259E%25E6%25A1%25A5%3Fzn%3D%25E8%258B%258F%25E5%25B7%259E%25E6%25A1%25A5%22%2C%22x%22%3A%220%22%2C%22y%22%3A%220%22%2C%22name%22%3A%22%E8%8B%8F%E5%B7%9E%E6%A1%A5%22%2C%22total%22%3A%220%22%7D"]; ershoufang_cookiekey=["%7B%22url%22%3A%22%2Fzufang%2F_%25E9%2595%25BF%25E6%2598%25A5%25E6%25A1%25A5%3Fzn%3D%25E9%2595%25BF%25E6%2598%25A5%25E6%25A1%25A5%22%2C%22x%22%3A%220%22%2C%22y%22%3A%220%22%2C%22name%22%3A%22%E9%95%BF%E6%98%A5%E6%A1%A5%22%2C%22total%22%3A%220%22%7D","%7B%22url%22%3A%22%2Fershoufang%2F_%25E8%258B%258F%25E5%25B7%259E%25E6%25A1%25A5%3Fzn%3D%25E8%258B%258F%25E5%25B7%259E%25E6%25A1%25A5%22%2C%22x%22%3A%220%22%2C%22y%22%3A%220%22%2C%22name%22%3A%22%E8%8B%8F%E5%B7%9E%E6%A1%A5%22%2C%22total%22%3A%220%22%7D"]; zufang_BROWSES=501465046,501446051,90241951,90178388,90056278,90187979,501390110,90164392,90168076,501472221,501434480,501480593,501438374,501456072,90194547,90223523,501476326,90245144; historyCity=["\u5317\u4eac"]; _gid=GA1.2.23153704.1621410645; Hm_lvt_94ed3d23572054a86ed341d64b267ec6=1620784715,1621410646; _Jo0OQK=4958FA78A5CC420C425C480565EB46670E81832D8173C5B3CFE61303A51DE43E320422D6C7A15892C5B8B66971ED1B97A7334F0B591B193EBECAAB0E446D805316B26107A0B847CA53375B268E06EC955BB75B268E06EC955BB9D992FB153179892GJ1Z1OA==; ershoufang_BROWSES=501129552; domain=bj; 8fcfcf2bd7c58141_gr_session_id=61676ce2-ea23-4f77-8165-12edcc9ed902; 8fcfcf2bd7c58141_gr_session_id_61676ce2-ea23-4f77-8165-12edcc9ed902=true; yfx_f_l_v_t_10000001=f_t_1620784714003__r_t_1621471673953__v_t_1621474304616__r_c_2; Hm_lpvt_94ed3d23572054a86ed341d64b267ec6=1621475617'headers = {    'User-Agent': 'Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWEBKit/537.36 (Khtml, like Gecko) Chrome/90.0.4430.72 Safari/537.36',    'Cookie': cookie.encode("utf-8").decode("latin1")}def run():    base_url = 'https://bj.5i5j.com/ershoufang/xichengqu/n%d/'    for page in range(1, 11):        url = base_url % page        print(url)        html = requests.get(url, headers=headers).text        soup = BeautifulSoup(html, 'lxml')        try:            for li in soup.find('div', class_='list-con-box').find('ul', class_='pList').find_all('li'):                title = li.find('h4', class_='listTit').get_text()  # 名称                # print(title)        except Exception as e:            print(e)            print(html)            breakif __name__ == '__main__':    run()

运行后会发现,在抓取Https://bj.5i5j.com/ershoufang/xichengqu/n1/(也可能是其他页码)时,会报错:'NoneType' object has no attribute 'find',观察输出的html信息,可以发现html内容为:<HTML><HEAD><script>window.location.href="https://bj.5i5j.com/ershoufang/xichengqu/n1/?wscckey=0f36b400da92f41d_1621823822" rel="external nofollow" ;</script></HEAD><BODY>,但此链接在浏览器访问是可以看到数据的,但链接会被重定向,重定向后的url即为上面这个htmlhref内容。因此,可以合理的推断,针对部分页码链接,我爱我家不会直接返回数据,但会返回带有正确链接的信息,通过正则表达式获取该链接即可正确抓取数据。

二、解决方法

在下面的完整代码中,采取的解决方法是:

首先判断当前html是否含有数据

若无数据,则通过正则表达式获取正确链接

重新获取html数据

if '<HTML><HEAD><script>window.location.href=' in html:url = re.search(r'.*?href="(.+)" rel="external nofollow"  rel="external nofollow" .*?', html).group(1)html = requests.get(url, headers=headers).text

三、完整代码

# -*-coding:utf-8-*-import osimport reimport requestsimport csvimport timefrom bs4 import BeautifulSoupfolder_path = os.path.split(os.path.abspath(__file__))[0] + os.sep  # 获取当前文件所在目录cookie = 'phpSESSID=aivms4ufg15sbrj0qgboo3c6gj; HMF_CI=4d8ff20092e9832daed8fe5eb0475663812603504e007aca93e6630c00b84dc207; _ga=GA1.2.556271139.1620784679; gr_user_id=4c878c8f-406b-46a0-86ee-a9baf2267477; _dx_uzZo5y=68b673b0aaec1f296c34e36c9e9d378bdb2050ab4638a066872a36f781c888efa97af3b5; smidV2=20210512095758ff7656962db3adf41fa8fdc8ddc02ecb00bac57209becfaa0; yfx_c_g_u_id_10000001=_ck21051209583410015104784406594; __TD_deviceId=41HK9PMCSF7GOT8G; zufang_cookiekey=["%7B%22url%22%3A%22%2Fzufang%2F_%25E9%2595%25BF%25E6%2598%25A5%25E6%25A1%25A5%3Fzn%3D%25E9%2595%25BF%25E6%2598%25A5%25E6%25A1%25A5%22%2C%22x%22%3A%220%22%2C%22y%22%3A%220%22%2C%22name%22%3A%22%E9%95%BF%E6%98%A5%E6%A1%A5%22%2C%22total%22%3A%220%22%7D","%7B%22url%22%3A%22%2Fzufang%2F_%25E8%258B%258F%25E5%25B7%259E%25E8%25A1%2597%3Fzn%3D%25E8%258B%258F%25E5%25B7%259E%25E8%25A1%2597%22%2C%22x%22%3A%220%22%2C%22y%22%3A%220%22%2C%22name%22%3A%22%E8%8B%8F%E5%B7%9E%E8%A1%97%22%2C%22total%22%3A%220%22%7D","%7B%22url%22%3A%22%2Fzufang%2F_%25E8%258B%258F%25E5%25B7%259E%25E6%25A1%25A5%3Fzn%3D%25E8%258B%258F%25E5%25B7%259E%25E6%25A1%25A5%22%2C%22x%22%3A%220%22%2C%22y%22%3A%220%22%2C%22name%22%3A%22%E8%8B%8F%E5%B7%9E%E6%A1%A5%22%2C%22total%22%3A%220%22%7D"]; ershoufang_cookiekey=["%7B%22url%22%3A%22%2Fzufang%2F_%25E9%2595%25BF%25E6%2598%25A5%25E6%25A1%25A5%3Fzn%3D%25E9%2595%25BF%25E6%2598%25A5%25E6%25A1%25A5%22%2C%22x%22%3A%220%22%2C%22y%22%3A%220%22%2C%22name%22%3A%22%E9%95%BF%E6%98%A5%E6%A1%A5%22%2C%22total%22%3A%220%22%7D","%7B%22url%22%3A%22%2Fershoufang%2F_%25E8%258B%258F%25E5%25B7%259E%25E6%25A1%25A5%3Fzn%3D%25E8%258B%258F%25E5%25B7%259E%25E6%25A1%25A5%22%2C%22x%22%3A%220%22%2C%22y%22%3A%220%22%2C%22name%22%3A%22%E8%8B%8F%E5%B7%9E%E6%A1%A5%22%2C%22total%22%3A%220%22%7D"]; zufang_BROWSES=501465046,501446051,90241951,90178388,90056278,90187979,501390110,90164392,90168076,501472221,501434480,501480593,501438374,501456072,90194547,90223523,501476326,90245144; historyCity=["\u5317\u4eac"]; _gid=GA1.2.23153704.1621410645; Hm_lvt_94ed3d23572054a86ed341d64b267ec6=1620784715,1621410646; _Jo0OQK=4958FA78A5CC420C425C480565EB46670E81832D8173C5B3CFE61303A51DE43E320422D6C7A15892C5B8B66971ED1B97A7334F0B591B193EBECAAB0E446D805316B26107A0B847CA53375B268E06EC955BB75B268E06EC955BB9D992FB153179892GJ1Z1OA==; ershoufang_BROWSES=501129552; domain=bj; 8fcfcf2bd7c58141_gr_session_id=61676ce2-ea23-4f77-8165-12edcc9ed902; 8fcfcf2bd7c58141_gr_session_id_61676ce2-ea23-4f77-8165-12edcc9ed902=true; yfx_f_l_v_t_10000001=f_t_1620784714003__r_t_1621471673953__v_t_1621474304616__r_c_2; Hm_lpvt_94ed3d23572054a86ed341d64b267ec6=1621475617'headers = {    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36',    'Cookie': cookie.encode("utf-8").decode("latin1")}def get_page(url):    """获取网页原始数据"""    global headers    html = requests.get(url, headers=headers).text    return htmldef extract_info(html):    """解析网页数据,抽取出房源相关信息"""    host = 'https://bj.5i5j.com'    soup = BeautifulSoup(html, 'lxml')    data = []    for li in soup.find('div', class_='list-con-box').find('ul', class_='pList').find_all('li'):        try:            title = li.find('h4', class_='listTit').get_text()  # 名称            url = host + li.find('h4', class_='listTit').a['href']  # 链接            info_li = li.find('div', class_='listX')  # 每个房源核心信息都在这里            p1 = info_li.find_all('p')[0].get_text()  # 获取第一段            info1 = [i.strip() for i in p1.split('  ·  ')]            # 户型、面积、朝向、楼层、装修、建成时间            house_type, area, direction, floor, decoration, build_year = info1            p2 = info_li.find_all('p')[1].get_text()  # 获取第二段            info2 = [i.replace(' ', '') for i in p2.split('·')]            # 小区、位于几环、交通信息            if len(info2) == 2:                residence, ring = info2                transport = ''  # 部分房源无交通信息            elif len(info2) == 3:                residence, ring, transport = info2            else:                residence, ring, transport = ['', '', '']            p3 = info_li.find_all('p')[2].get_text()  # 获取第三段            info3 = [i.replace(' ', '') for i in p3.split('·')]            # 关注人数、带看次数、发布时间            try:                watch, arrive, release_year = info3            except Exception as e:                print(info2, '获取带看、发布日期信息出错')                watch, arrive, release_year = ['', '', '']            total_price = li.find('p', class_='redC').get_text().strip()  # 房源总价            univalence = li.find('div', class_='jia').find_all('p')[1].get_text().replace('单价', '')  # 房源单价            else_info = li.find('div', class_='listTag').get_text()            data.append([title, url, house_type, area, direction, floor, decoration, residence, ring,                         transport, total_price, univalence, build_year, release_year, watch, arrive, else_info])        except Exception as e:            print('extract_info: ', e)    return datadef crawl():    esf_url = 'https://bj.5i5j.com/ershoufang/'  # 主页网址    fields = ['城区', '名称', '链接', '户型', '面积', '朝向', '楼层', '装修', '小区', '环', '交通情况', '总价', '单价',              '建成时间', '发布时间', '关注', '带看', '其他信息']    f = open(folder_path + 'data' + os.sep + '北京二手房-我爱我家.csv', 'w', newline='', encoding='gb18030')    writer = csv.writer(f, delimiter=',')  # 以逗号分割    writer.writerow(fields)    page = 1    regex = re.compile(r'.*?href="(.+)" rel="external nofollow"  rel="external nofollow" .*?')    while True:        url = esf_url + 'n%s/' % page  # 构造页面链接        if page == 1:            url = esf_url        html = get_page(url)        # 部分页面链接无法获取数据,需进行判断,并从返回html内容中获取正确链接,重新获取html        if '<HTML><HEAD><script>window.location.href=' in html:            url = regex.search(html).group(1)            html = requests.get(url, headers=headers).text        print(url)        data = extract_info(html)        if data:            writer.writerows(data)        page += 1    f.close()if __name__ == '__main__':    crawl()  # 启动爬虫

四、数据展示

截至2021年5月23日,共获取数据62943条,基本上将我爱我家官网上北京地区的二手房数据全部抓取下来了。

Python爬虫之如何爬取我爱我家二手房数据 

感谢各位的阅读!关于“python爬虫之如何爬取我爱我家二手房数据”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Python爬虫之如何爬取我爱我家二手房数据

本文链接: https://www.lsjlt.com/news/278447.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python爬虫之爬取我爱我家二手房数据
    目录一、问题说明二、解决方法三、完整代码四、数据展示一、问题说明 首先,运行下述代码,复现问题: # -*-coding:utf-8-*- import re import r...
    99+
    2024-04-02
  • Python爬虫之如何爬取我爱我家二手房数据
    这篇文章给大家分享的是有关Python爬虫之如何爬取我爱我家二手房数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、问题说明首先,运行下述代码,复现问题:# -*-coding:utf-8-*-im...
    99+
    2023-06-15
  • Python爬虫之爬取二手房信息
    前言 说到二手房信息,不知道你们心里最先跳出来的公司(网站)是什么,反正我心里第一个跳出来的是网站是 58 同城。哎呦,我这暴脾气,想到就赶紧去干。 但很显然,我失败了。说显然,而不...
    99+
    2024-04-02
  • Python爬虫入门案例之爬取二手房源数据
    本文重点 系统分析网页性质 结构化的数据解析 csv数据保存 环境介绍 python 3.8 pycharm 专业版 >>&...
    99+
    2024-04-02
  • 怎么使用python爬虫爬取二手房数据
    这篇文章主要介绍怎么使用python爬虫爬取二手房数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(长整型)和floa...
    99+
    2023-06-14
  • 我爬了链家青岛市北3000套二手房得出一
    前言 青岛的房价这两年翻了一番,举个栗子,如果你在2016年在市区买了100万的房子,2018年价值200万,净增100万;如果你2016年没有买这100万的房子,2018年买房将多付100万,机会成本100万。而这100万可能是青岛白...
    99+
    2023-01-30
    青岛市 二手房 爬了
  • python如何进行爬取链家二手房租赁信息
    本篇文章给大家分享的是有关python如何进行爬取链家二手房租赁信息,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。大家在外打拼的时候都需要租房子住,于是大家就会上各种房子租赁的...
    99+
    2023-06-02
  • python爬虫之教你如何爬取地理数据
    目录一、shapely模块1、shapely2、point→Point类3、导入所需模块4、Point(1)、创建point,主要有以下三种方法(2)、point常用属性(3)、po...
    99+
    2024-04-02
  • Python爬虫之自动爬取某车之家各车销售数据
    目录一、目标网页分析二、数据请求三、数据解析四、数据存储五、采集结果预览一、目标网页分析 目标网站是某车之家关于品牌汽车车型的口碑模块相关数据,比如我们演示的案例奥迪Q5L的口碑页面...
    99+
    2024-04-02
  • python爬虫之爬取谷歌趋势数据
    一、前言  爬取谷歌趋势数据需要科学上网~ 二、思路 谷歌数据的爬取很简单,就是代码有点长。主要分下面几个就行了 爬取的三个界面返回的都是json数据。主要获取对应的tok...
    99+
    2024-04-02
  • Python爬虫之爬取2020女团选秀数据
    目录一、先看结果1.1创造营2020撑腰榜前三甲1.2青春有你2当前官方榜前三甲1.3Face++男女视角颜值最高1.3.1女性视角颜值第一名1.3.2男性视角颜值第一名1.4小姐姐...
    99+
    2024-04-02
  • Python爬虫之爬取某文库文档数据
    目录一、基本开发环境二、相关模块的使用三、目标网页分析四、整体思路五、爬虫代码实现六、写入文档一、基本开发环境 Python 3.6 Pycharm 二、相关模块的使用 impo...
    99+
    2024-04-02
  • python爬虫如何获取数据
    使用Python爬虫获取数据可以分为以下几个步骤: 导入所需的库:通常情况下,使用requests库发送HTTP请求获取网页内容,...
    99+
    2024-02-29
    python
  • Python 爬虫:如何用 BeautifulSoup 爬取网页数据
    在网络时代,数据是最宝贵的资源之一。而爬虫技术就是一种获取数据的重要手段。Python 作为一门高效、易学、易用的编程语言,自然成为了爬虫技术的首选语言之一。而 BeautifulSoup 则是 Py...
    99+
    2023-10-23
    python 爬虫 beautifulsoup
  • Python爬虫爬取豆瓣电影之数据提取值
    工具:Python 3.6.5、PyCharm开发工具、Windows 10 操作系统、谷歌浏览器 目的:爬取豆瓣电影排行榜中电影的title、链接地址、图片、评价人数、评分等 网址:https://movie.douban.com/ch...
    99+
    2023-01-30
    爬虫 豆瓣 数据
  • python爬虫之Appium爬取手机App数据及模拟用户手势
    目录Appium模拟操作屏幕滑动屏幕点击屏幕拖动屏幕拖拽文本输入动作链实战:爬取微博首页信息 Appium 在前文的讲解中,我们学会了如何安装Appium,以及一些基础获取App元素...
    99+
    2024-04-02
  • python爬虫如何爬取微博粉丝数据
    这篇文章主要介绍了python爬虫如何爬取微博粉丝数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python可以做什么Python是一种编程语言,内置了许多有效的工具,P...
    99+
    2023-06-14
  • Python爬虫爬取百度翻译之数据提取方
    工具:Python 3.6.5、PyCharm开发工具、Windows 10 操作系统 说明:本例为实现输入中文翻译为英文的小程序,适合Python爬虫的初学者一起学习,感兴趣的可以做英文翻译为中文的功能,如单词查询功能等。推荐使用谷歌浏...
    99+
    2023-01-30
    爬虫 数据 Python
  • 如何用python抓取链家网二手房数据
    本篇内容介绍了“如何用python抓取链家网二手房数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!# -*- coding: utf-8i...
    99+
    2023-06-04
  • Python网络爬虫之如何获取网络数据
    本篇内容介绍了“Python网络爬虫之如何获取网络数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用 Python 获取网络数据使用 P...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作