千家信息网

Python如何爬取房源数据

发表于:2024-09-27 作者:千家信息网编辑
千家信息网最后更新 2024年09月27日,这篇"Python如何爬取房源数据"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Py
千家信息网最后更新 2024年09月27日Python如何爬取房源数据

这篇"Python如何爬取房源数据"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Python如何爬取房源数据"文章吧。

一、爬虫是什么?

在进行大数据分析或者进行数据挖掘的时候,数据源可以从某些提供数据统计的网站获得,也可以从某些文献或内部资料中获得,但是这些获得数据的方式,有时很难满足我们对数据的需求,而手动从互联网中去寻找这些数据,则耗费的精力过大。此时就可以利用爬虫技术,自动地从互联网中获取我们感兴趣的数据内容,并将这些数据内容爬取回来,作为我们的数据源,从而进行更深层次的数据分析,并获得更多有价值的信息。 在使用爬虫前首先要了解爬虫所需的库(requests)或者( urllib.request ),该库是为了爬取数据任务而创建的。

二、使用步骤

本篇文章所有url皆为不可用url,不可直接运行!(爬取他人的数据是一种违法行为,学习爬虫的时候请注意!)

1.引入库

代码如下(示例):

import osimport urllib.requestimport randomimport timeclass BeikeSpider:    def __init__(self, save_path="./beike"):        """        贝壳爬虫构造函数        :param save_path: 网页保存目录        """

2.读入数据

代码如下 :

# 网址模式        self.url_mode = "http://{}.***.com/loupan/pg{}/"        # 需爬取的城市        self.cities = ["cd", "sh", "bj"]        # 每个城市爬取的页数        self.total_pages = 20        # 让爬虫程序随机休眠5-10秒        self.sleep = (5, 10)        # 网页下载保存根目录        self.save_path = save_path        # 设置用户代理,是爬虫程序伪装成浏览器        self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36"}        # 代理IP的信息        self.proxies = [            {"https": "123.163.67.50:8118"},            {"https": "58.56.149.198:53281"},            {"https": "14.115.186.161:8118"}        ]        # 创建保存目录        if not os.path.exists(self.save_path):            os.makedirs(self.save_path)   def crawl(self):        """        执行爬取任务        :return: None        """

该处使用的url网络请求的数据。

3.随机选择一个ip地址构建代理服务器

 for city in self.cities:            print("正在爬取的城市:", city)            # 每个城市的网页用单独的目录存放            path = os.path.join(self.save_path, city)            if not os.path.exists(path):                os.makedirs(path)            for page in range(1, self.total_pages+1):                # 构建完整的url                url = self.url_mode.format(city, page)                # 构建Request对象, 将url和请求头放入对象中                request = urllib.request.Request(url, headers=self.headers)                # 随机选择一个代理IP                proxy = random.choice(self.proxies)                # 构建代理服务器处理器                proxy_handler = urllib.request.ProxyHandler(proxy)                # 构建opener                opener = urllib.request.build_opener(proxy_handler)                # 使用构建的opener打开网页                response = opener.open(request)                html = response.read().decode("utf-8")                # 网页保存文件名(包含路径)                filename = os.path.join(path, str(page)+".html")                # 保存网页                self.save(html, filename)                print("第%d页保存成功!" % page)                # 随机休眠                sleep_time = random.randint(self.sleep[0], self.sleep[1])                time.sleep(sleep_time)

该处除随机选择ip地址以外还会限制爬取数据的速度,避免暴力爬取。

4.运行代码

def save(self, html, filename):        """        保存下载的网页        :param html: 网页内容        :param filename: 保存的文件名        :return:        """        f = open(filename, 'w', encoding="utf-8")        f.write(html)        f.close()    def parse(self):        """        解析网页数据        :return:        """        passif __name__ == "__main__":    spider = BeikeSpider()    spider.crawl()


运行结果就会这样,会保存在你的文件夹中。

以上就是关于"Python如何爬取房源数据"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

0