专栏首页Python爬虫与数据挖掘手把手教你利用Python网络爬虫获取链家网的房产信息

手把手教你利用Python网络爬虫获取链家网的房产信息

/1 前言/

随着人们生活方式的的提高,房子成为了我们必不可少的一部分。而网上的信息太过于复杂,为了了解最近房价的变化趋势。小编以链家这个网站为例,抓取房价的信息。

/2 项目目标/

实现将获取到的房子的名字、价格、房子的关注度,导入Word模板,并生成独立的Word文档。

/3 涉及的库和网站/

先列出网址,如下所示。

网址:https://bj.lianjia.com/ershoufang/pg1/("bj"北京的缩写)

库:requeststime lxml

/4 具体分析/

如何对下一页的网址进行请求?

点击下一页的按钮,观察到网站的变化分别如下:

https://bj.lianjia.com/ershoufang/pg1/
https://bj.lianjia.com/ershoufang/pg2/
https://bj.lianjia.com/ershoufang/pg3/

观察到只有pg()变化,变化的部分用{}格式化代替,再用for循环遍历这网址,实现多个网址请求。

/5 实现步骤/

1. 我们定义一个class类继承object,然后定义init方法继承self,再定义一个主函数main继承self。准备url地址和请求头headers。

import requests
from lxml import etree
import time
class LianJia(object):
    def __init__(self):
       pass
  
    def main(self):
        pass

if __name__ == '__main__':
    spider= LianJia()
    spider.main()

2. 对网站发生请求

def __init__(self):
        self.url = "https://bj.lianjia.com/ershoufang/pg{}/"
        self.headers = {
            "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
        }  
        # 请求数据
def get_page(self,url):
         html = requests.get(url=url,headers=self.headers).content.decode("utf-8")
         # print(html)
         self.page_page(html)

3. 对请求到的数据进行处理

# 数据处理
def page_page(self,html):
    parse_html = etree.HTML(html)
    page = parse_html.xpath('//*[@id="content"]/div[1]/ul/li')
    house_dict = {}
    for li in page:
     house_dict['名称']=li.xpath('.//div[@class="infoclear"]//div[@class="title"]/a/text()')[0].strip()
    house_dict["价格"] = li.xpath(".//div[@class='priceInfo']/div[@class='totalPrice']/span/text()")[0].strip()+"万"
   house_dict["关注度"] = li.xpath('.//div[@class="info clear"]//div[@class="followInfo"]//text()')[0].strip()

1) 在谷歌浏览器上,进行右键选择开发者工具或者按下键盘的F12,如下图所示。

2) 右键检查,找到房价的链接,如下图所示。

4. 将获取的信息写入word文档

f = open('房子.doc', 'a', encoding = 'utf-8')  # 以'w'方式打开文件
         f.write(str(house_dict))
         print(house_dict)
         f.write("\n")  # 键和值分行放,键在单数行,值在双数行
         f.close()

5. 在main方法调用

def main(self):
        for pg in range(1 ,101): #for遍历得到的网址
            url = self.url.format(str(pg))
            print(" = "  *50)
            time.sleep(1.4) #时间延时

/6 效果展示/

1. 点击绿色按钮运行,将结果显示在控制台,如下图所示。

2. 保存在一个名为“房子”world文档里,如下图所示。

/7 小结/

  1. 不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。
  2. 希望通过这个项目,能够帮助大家更好的了解房价的趋势。
  3. 本文基于Python网络爬虫,利用爬虫库,实现链家网部分房价信息的抓取。就Python爬取链家的房产信息中的一些难点, 进行详细的讲解和提供有效的解决方案。
  4. 欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。
  5. 如果本文源码的小伙伴,请在后台回复“链家网”三个字进行获取,觉得不错,记得给个Star噢~

------------------- End -------------------

本文分享自微信公众号 - Python爬虫与数据挖掘(crawler_python),作者:Python进阶者

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 手把手教你使用Python网络爬虫获取菜谱信息

    今天教大家去爬取下厨房的菜谱 ,保存在world文档,方便日后制作自己的小菜谱。

    Python进阶者
  • 手把手教你用Python制作简易小说阅读器

    不知从什么时候开始。小说开始掀起了一股浪潮,它让我们平日里的生活不在枯燥乏味,很多我们做不到的事情在小说里都能轻易实现。

    Python进阶者
  • 一篇文章教会你用Python多线程获取小米应用商店App

    小米应用商店给用户发现最好的安卓应用和游戏,安全可靠,可是要下载东西要一个一个的搜索太麻烦了。而已速度不是很快。

    Python进阶者
  • 手把手教你利用Python网络爬虫获取链家网的房产信息

    随着人们生活方式的的提高,房子成为了我们必不可少的一部分。而网上的信息太过于复杂,为了了解最近房价的变化趋势。小编以链家这个网站为例,抓取房价的信息。

    用户7466307
  • 手把手教你利用Python网络爬虫获取链家网的房产信息

    随着人们生活方式的的提高,房子成为了我们必不可少的一部分。而网上的信息太过于复杂,为了了解最近房价的变化趋势。小编以链家这个网站为例,抓取房价的信息。

    朱小五
  • 手把手教你使用Python网络爬虫获取招聘信息

    现在在疫情阶段,想找一份不错的工作变得更为困难,很多人会选择去网上看招聘信息。可是招聘信息有一些是错综复杂的。而且不能把全部的信息全部罗列出来,以外卖的58招...

    用户1564362
  • 使用QuadTree算法在Python中实现Photo Stylizer

    最近发现迈克尔·弗格曼(Michael Fogleman)完成了一个叫做四叉树艺术的项目。它激发了尝试编写自己的项目版本。这就是将在本文中讨论的,如何实现自己的...

    代码医生工作室
  • iOS开发之UITableView联动实现城市选择器

    在 iOS开发之城市选择器一文中用两列的UIPickerView实现了城市选择器,今天用两个UITableView来实现一下,首先这种联动在很多地方用得上,而且...

    YungFan
  • Python编程思想(24):类的实例方法

    对于在类中定义的实例方法,Python会自动绑定方法的第1个参数(通常是self),第1个参数总是指向调用该方法的对象。由于实例方法(包括构造方法)的self参...

    蒙娜丽宁
  • python的tkinter编程(五)介绍tkinter自带的组件标签,Label标签

    之前已经讲了利用tkinter创建窗口,现在介绍我们可以使用的人家自带的组件标签,现在讲解第一个Lable标签。

    一天不写程序难受

扫码关注云+社区

领取腾讯云代金券