QQ登录

只需要一步,快速开始

APP扫码登录

只需要一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 2474|回复: 0

[Python] Python爬取贝壳房源数据的实战教程

[复制链接]

等级头衔

积分成就    金币 : 2857
   泡泡 : 1516
   精华 : 6
   在线时间 : 1314 小时
   最后登录 : 2025-1-21

丰功伟绩

优秀达人突出贡献荣誉管理论坛元老活跃会员

联系方式
发表于 2021-6-25 10:48:44 | 显示全部楼层 |阅读模式
       随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容,了解python爬虫,本文给大家分享Python爬取贝壳房源数据的实战教程,感兴趣的朋友一起学习吧
- b6 }, b- d) f" M# Q# x  X- w一、爬虫是什么?
% U3 q+ `. O1 k9 w+ D        在进行大数据分析或者进行数据挖掘的时候,数据源可以从某些提供数据统计的网站获得,也可以从某些文献或内部资料中获得,但是这些获得数据的方式,有时很难满足我们对数据的需求,而手动从互联网中去寻找这些数据,则耗费的精力过大。此时就可以利用爬虫技术,自动地从互联网中获取我们感兴趣的数据内容,并将这些数据内容爬取回来,作为我们的数据源,从而进行更深层次的数据分析,并获得更多有价值的信息。在使用爬虫前首先要了解爬虫所需的库(requests)或者( urllib.request ),该库是为了爬取数据任务而创建的。5 Q/ c$ _& D8 I/ N, m/ W* {
二、使用步骤( o( d; k/ p- f8 S
1.引入库2 h8 D2 @$ v7 G/ E- M- R  D
       代码如下(示例):
* M6 d% z7 _9 j! d+ s- E. [: L5 U
import os
import urllib.request
import random
import time
class BeikeSpider:
def __init__(self, save_path="./beike"):
"""
        贝壳爬虫构造函数
        :param save_path: 网页保存目录
        """
2.读入数据
4 R6 Q* ?4 [' v, k6 k% Y7 H+ }3 `       代码如下 :- Z/ K7 G3 G1 b% A5 ]: x- ^
# 网址模式
self.url_mode = "http://{}.fang.ke.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网络请求的数据。9 d9 @" `! i( f
3.随机选择一个ip地址构建代理服务器8 K/ n9 W8 a" B5 `" [8 z" U
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地址以外还会限制爬取数据的速度,避免暴力爬取。5 [' E9 p% @9 y- O1 ]9 J9 H  p2 c
4.运行代码; S2 h+ o) `4 h8 C, @7 ?
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:
        """
pass

if __name__ == "__main__":
    spider = BeikeSpider()
    spider.crawl()
1.jpg % v- r: r3 u% q% k+ V: @5 g$ Y; `
       运行结果就会这样,会保存在你的文件夹中。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|paopaomj.COM ( 渝ICP备18007172号|渝公网安备50010502503914号 )

GMT+8, 2025-1-21 17:44

Powered by paopaomj X3.5 © 2016-2025 sitemap

快速回复 返回顶部 返回列表