Python手拉手教你爬取贝壳房源数据的实战教程

作者:小郭锅 时间:2023-07-10 12:58:36 

一、爬虫是什么?

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

 二、使用步骤

1.引入库

代码如下(示例):


import os
import urllib.request
import random
import time
class BeikeSpider:
   def __init__(self, save_path="./beike"):
       """
       贝壳爬虫构造函数
       :param save_path: 网页保存目录
       """

2.读入数据

代码如下 :


# 网址模式
       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"}
       # * 的信息
       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)

# 随机选择一个 *
               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:
       """
       pass

if __name__ == "__main__":
   spider = BeikeSpider()
   spider.crawl()

Python手拉手教你爬取贝壳房源数据的实战教程

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

总结

这里对文章进行总结:今天分析这波代码目的是为了让大家清晰明亮的了解python爬虫的运作,和大家一起学习
以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而urllib.request提供了大量能使我们快速便捷地爬取数据。

来源:https://blog.csdn.net/g6_12/article/details/115893317

标签:Python,爬取,数据
0
投稿

猜你喜欢

  • 浅析Python中MySQLdb的事务处理功能

    2024-01-14 01:23:10
  • vue使用iframe嵌入网页的示例代码

    2024-05-05 09:12:04
  • VSCode开发必备插件推荐(墙裂推荐!)

    2022-06-21 14:09:16
  • 数据库新手入门之MYSQL出错代码列表

    2008-12-23 15:22:00
  • Python实现对adb命令封装

    2022-07-07 23:41:13
  • SQL Server 触发器 表的特定字段更新时,触发Update触发器

    2024-01-25 09:32:20
  • 使用FCKeditor添加文章时,在文章最后多了逗号

    2007-10-11 13:38:00
  • MySQL下载安装配置详细教程 附下载资源

    2024-01-29 10:15:41
  • 使用 JScript 创建 .exe 或 .dll 文件

    2011-06-04 15:37:00
  • IDA Pro 6.0使用Qt框架实现了跨平台的UI界面

    2022-12-05 05:07:55
  • Python assert关键字原理及实例解析

    2022-11-12 09:24:10
  • js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)

    2024-04-23 09:24:07
  • 详解使用Python写一个向数据库填充数据的小工具(推荐)

    2024-01-13 19:06:41
  • 国际上十四个优秀网页设计审核站

    2007-09-30 20:18:00
  • CSS Sprites

    2007-10-10 13:21:00
  • 使用Python写一个量化股票提醒系统

    2022-04-19 14:35:42
  • Python写一个简单的在线编辑器

    2022-07-26 22:49:17
  • PHP单例模式简单用法示例

    2023-11-18 19:45:41
  • JavaScript简单编程实例学习

    2024-04-29 13:24:52
  • Python 实现取矩阵的部分列,保存为一个新的矩阵方法

    2023-07-17 23:22:30
  • asp之家 网络编程 m.aspxhome.com