首页 > 其他分享 >用Swift库写爬虫采集统计局公开数据

用Swift库写爬虫采集统计局公开数据

时间:2024-01-11 11:01:18浏览次数:28  
标签:库写 data 爬虫 JSON HTML let error Swift

国家统计局公开的信息还是比较真实准确的,他可以给一个行业带来一些参考性意见。因此,有公司找上我,让我爬取一些行业数据,因为是老客户了也就没推辞,但是因为最近也比较忙,也就利用晚上时间加个班搞下。

用Swift库写爬虫采集统计局公开数据_JSON

首先,我们需要导入必要的库,包括SwiftSoupSwiftyJSONSwiftSoup是一个强大的库,用于在Swift中解析HTML和XML文档。SwiftyJSON是一个Swift版的JSON解析器,可以很容易地将JSON数据转换为Swift对象。

import SwiftSoup
import SwiftyJSON

然后,我们需要设置代理。在这个例子中,我们使用的是duoip的代理,端口是8000。

let proxyHost = "duoip"
let proxyPort = 8000
提取/免/费IP  //  jshk.com.cn/mb/reg.asp?kefu=xjy&51cto
let proxy = CFNetwork.CFProxyType(type: CFNetwork.kCFProxyTypeHTTP, subType: 0)
let proxySettings = CFNetwork.CFProxySettings()
proxySettings.host = proxyHost
proxySettings.port = Int32(proxyPort)
CFNetwork.CFNetworkSetGlobalProxySettings(proxySettings)

接下来,我们需要获取统计局网站的HTML文档。我们将使用SwiftSoup来解析这个文档。

let url = URL(string: "http://data.stats.gov.cn/zhengcehuobisi/2017/index.html")
let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
    if let error = error {
        print("Error: \(error.localizedDescription)")
        return
    }
    guard let data = data else {
        print("Data not found")
        return
    }
    do {
        let doc: Document = try SwiftSoup.parse(data)
        // 我们在这里解析HTML文档
    } catch let error {
        print("Error parsing HTML: \(error.localizedDescription)")
    }
}
task.resume()

最后,我们需要使用SwiftyJSON来解析JSON数据。在这个例子中,我们假设JSON数据包含在HTML文档中的<script>标签中。

let scriptElement = doc.select("script").first()
if let scriptNode = scriptElement?.html, let json = try? JSON(data: scriptNode) {
    // 我们在这里解析JSON数据
}

这就是一个简单的Swift爬虫程序的基本框架。请注意,这只是一个基本的示例,实际的爬虫程序可能需要更复杂的逻辑,例如处理重定向,处理JavaScript,处理动态内容,等等。此外,爬虫行为可能受到网站的robots.txt文件的限制,因此在编写爬虫程序时,需要遵守网站的robots.txt文件的规则。

其实只要遵守网站规则,并且利用爬虫IP就能实现实时抓取信息,虽说只是一个基本的爬虫模版,但是相对于新手来说,只要稍微修改下就可以使用,而且爬虫模版兼容性非常好,适合随时拓展增加代码。当然了,如果有任何问题都可以评论区留言一起讨论。

标签:库写,data,爬虫,JSON,HTML,let,error,Swift
From: https://blog.51cto.com/u_13488918/9194530

相关文章

  • 爬虫之短信验证码
    ​ 处理短信验证码的思路就是手机端有一个可以转发短信到我们可以读取的地方。目前我的处理方式是将短信转发到邮箱,再读取邮箱中的邮件拿取验证码。​ 首先就需要下载转发工具:https://github.com/pppscn/SmsForwarder/releases/tag/v3.2.0具体使用参考官方文档。以下是12306短......
  • 快乐学Python,数据分析之获取数据方法「公开数据或爬虫」
    学习Python数据分析,第一步是先获取数据,为什么说数据获取是数据分析的第一步呢,显而易见:数据分析,得先有数据,才能分析。作为个人来说,如何获取用于分析的数据集呢?1、获取现成的数据集获取数据集的第一种方式,就是获取行业上已经有人整理好的数据集。目前大数据行业持续火爆,数据本身已......
  • 使用Ruby编写的代理爬虫程序:抓取dy视频播放量接口数据并解析(附详细中文解释)
    随着互联网的快速发展,网络数据的获取变得愈发重要。在某些情况下,我们可能需要通过代理来访问特定的网站或API,以确保数据的准确性和可靠性。本文将介绍如何使用Ruby编写一个代理爬虫程序,以抓取dy视频播放量接口的数据并进行解析。准备工作首先,我们需要引入两个关键的Ruby库:open-uri......
  • 使用C#编写异步爬虫程序:爬取美图录网站精美图片内容并下载到本地
    使用C#编写的爬虫程序,用于爬取美图录网站上的图片内容。使用了HttpClient和Json.Net库。usingSystem;usingSystem.Net.Http;usingSystem.Threading.Tasks;usingNewtonsoft.Json.Linq;http://www.jshk.com.cn/mb/reg.asp?kefu=xiaoding;//爬虫IP免费获取;classProgram{......
  • 使用anaconda创建爬虫spyder工程
    1.由于每个工程使用的环境都可能不一样,因此一个好的习惯就是不同的工程都创建属于自己的环境,在anaconda中默认的环境是base,我们现在来创建一个名为spyder的环境,专门用于爬虫工程://括号中名字,代表当前的环境(base)dragon@machine:$condacreate--name=spyder2.激活环境//环境从......
  • 使用 Go 爬虫要注意什么
    Go语言是一门强大的编程语言,非常适合用于编写高效的网络爬虫程序。然而,在使用Go语言进行爬虫开发时,我们需要注意一些事项,以确保爬虫的稳定性、合法性和可维护性。本文将介绍一些关键的注意事项和最佳实践,帮助您编写高质量的Go语言爬虫。1.尊重网站的规则和政策在编写爬虫程序之前,务......
  • python爬虫之创建属于自己的ip代理池
    在后续需求数据量比较大的情况下,自建一个ip代理池可以帮助我们获得更多的数据。下面我来介绍一下整个过程1.找到目标代理网站https://www.dailiservers.com/go/websharehttps://proxyscrape.com/https://spys.one/https://free-proxy-list.net/http://free-proxy.cz/en/https:......
  • python爬虫进阶篇(异步)
    学习完前面的基础知识后,我们会发现这些爬虫的效率实在是太低了。那么我们需要学习一些新的爬虫方式来进行信息的获取。异步        使用python3.7后的版本中的异步进行爬取,多线程虽然快,但是异步才是爬虫真爱。基本概念讲解1.什么是异步?        异步是指在程序执行......
  • 使用Jsoup的Java网络爬虫示例:抓取在线考试平台试题数据
    网络爬虫是一种强大的工具,用于从互联网上收集信息。而在Java中,Jsoup是一款常用的HTML解析库,提供了便捷的API来解析、提取和操作HTML数据。在本文中,我们将深入探讨如何利用Jsoup库构建一个Java网络爬虫,并使用代理服务器来抓取在线考试平台的试题数据。介绍Jsoup和网络爬虫首先,我们将......
  • C语言爬虫程序采集58商铺出租转让信息
    为了找到一个好店铺好位置,往往要花费很大精力和财力过去寻找,就有有某些出租平台但是一个个查找下来也是十分麻烦,所以我利用我们的C语言基础,给大家写个商品转租的爬虫程序,让找店铺不在那么费时费力,至少获取信息比自己单个来的更容易。importrequestsfrombs4importBeautifulSoup......