QQ登录

只需要一步,快速开始

APP扫码登录

只需要一步,快速开始

手机号码,快捷登录

泡泡马甲APP 更多内容请下载泡泡马甲手机客户端APP 立即下载 ×
查看: 2321|回复: 0

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

[复制链接]

等级头衔

积分成就    金币 : 2806
   泡泡 : 1516
   精华 : 6
   在线时间 : 1244 小时
   最后登录 : 2024-5-5

丰功伟绩

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

联系方式
发表于 2021-6-25 10:48:44 | 显示全部楼层 |阅读模式
       随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容,了解python爬虫,本文给大家分享Python爬取贝壳房源数据的实战教程,感兴趣的朋友一起学习吧
$ C! \7 q3 B8 Y7 Z5 L6 ^一、爬虫是什么?
+ p* m4 u( O( o! [  e- z        在进行大数据分析或者进行数据挖掘的时候,数据源可以从某些提供数据统计的网站获得,也可以从某些文献或内部资料中获得,但是这些获得数据的方式,有时很难满足我们对数据的需求,而手动从互联网中去寻找这些数据,则耗费的精力过大。此时就可以利用爬虫技术,自动地从互联网中获取我们感兴趣的数据内容,并将这些数据内容爬取回来,作为我们的数据源,从而进行更深层次的数据分析,并获得更多有价值的信息。在使用爬虫前首先要了解爬虫所需的库(requests)或者( urllib.request ),该库是为了爬取数据任务而创建的。
& Y! S4 O* a4 _) |  \二、使用步骤
1 y* F/ p( H% P1 O# u, u1.引入库5 A# g2 ?4 {' w0 k9 b; z; \
       代码如下(示例):4 B' h) Z8 w7 H/ i7 f
  1. import os
  2. import urllib.request
  3. import random
  4. import time
  5. class BeikeSpider:
  6. def __init__(self, save_path="./beike"):
  7. """
  8.         贝壳爬虫构造函数
  9.         :param save_path: 网页保存目录
  10.         """
2.读入数据5 W' Z3 y+ Y, q0 B
       代码如下 :
& S5 y  Q# N5 \! }& m  S- Z
  1. # 网址模式
  2. self.url_mode = "http://{}.fang.ke.com/loupan/pg{}/"
  3. # 需爬取的城市
  4. self.cities = ["cd", "sh", "bj"]
  5. # 每个城市爬取的页数
  6. self.total_pages = 20
  7. # 让爬虫程序随机休眠5-10秒
  8. self.sleep = (5, 10)
  9. # 网页下载保存根目录
  10. self.save_path = save_path
  11. # 设置用户代理,是爬虫程序伪装成浏览器
  12. 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"}
  13. # 代理IP的信息
  14. self.proxies = [
  15.             {"https": "123.163.67.50:8118"},
  16.             {"https": "58.56.149.198:53281"},
  17.             {"https": "14.115.186.161:8118"}
  18.         ]
  19. # 创建保存目录
  20. if not os.path.exists(self.save_path):
  21.             os.makedirs(self.save_path)
  22. def crawl(self):
  23. """
  24.         执行爬取任务
  25.         :return: None
  26.         """
      该处使用的url网络请求的数据。
  @1 z* q! S  V: I6 g1 [* x  o/ _3.随机选择一个ip地址构建代理服务器
% ~" A* E5 L/ w' Z  D- O9 K6 y7 [
  1. for city in self.cities:
  2.             print("正在爬取的城市:", city)
  3. # 每个城市的网页用单独的目录存放
  4.             path = os.path.join(self.save_path, city)
  5. if not os.path.exists(path):
  6.                 os.makedirs(path)
  7. for page in range(1, self.total_pages+1):
  8. # 构建完整的url
  9.                 url = self.url_mode.format(city, page)
  10. # 构建Request对象, 将url和请求头放入对象中
  11.                 request = urllib.request.Request(url, headers=self.headers)
  12. # 随机选择一个代理IP
  13.                 proxy = random.choice(self.proxies)
  14. # 构建代理服务器处理器
  15.                 proxy_handler = urllib.request.ProxyHandler(proxy)
  16. # 构建opener
  17.                 opener = urllib.request.build_opener(proxy_handler)
  18. # 使用构建的opener打开网页
  19.                 response = opener.open(request)
  20.                 html = response.read().decode("utf-8")
  21. # 网页保存文件名(包含路径)
  22.                 filename = os.path.join(path, str(page)+".html")
  23. # 保存网页
  24. self.save(html, filename)
  25.                 print("第%d页保存成功!" % page)
  26. # 随机休眠
  27.                 sleep_time = random.randint(self.sleep[0], self.sleep[1])
  28.                 time.sleep(sleep_time)
      该处除随机选择ip地址以外还会限制爬取数据的速度,避免暴力爬取。
$ z' S* ?) @( ]  S9 v! n/ y1 w4.运行代码7 I% _: z9 P7 G$ I( H& a
  1. def save(self, html, filename):
  2. """
  3.         保存下载的网页
  4.         :param html: 网页内容
  5.         :param filename: 保存的文件名
  6.         :return:
  7.         """
  8.         f = open(filename, 'w', encoding="utf-8")
  9.         f.write(html)
  10.         f.close()
  11. def parse(self):
  12. """
  13.         解析网页数据
  14.         :return:
  15.         """
  16. pass
  17. if __name__ == "__main__":
  18.     spider = BeikeSpider()
  19.     spider.crawl()
1.jpg
& @& ]) C5 U1 M: }& `: E. _
       运行结果就会这样,会保存在你的文件夹中。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-10 07:39

Powered by paopaomj X3.4 © 2016-2024 sitemap

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