php如何抓取网页内容(【·简介】怎么做吗?答案这是一个1)

优采云 发布时间: 2021-10-24 20:03

  php如何抓取网页内容(【·简介】怎么做吗?答案这是一个1)

  栏目:类库·

  介绍本文文章主要介绍如何只显示部分网页内容(swift)(示例代码)及相关经验技巧。文章约3904字,浏览量426,点赞1,值得参考。!

  我是编码新手(根本没有编程语言背景)。我正在努力学习。我想创建一个简单的天气应用程序,一旦用户进入城市,天气信息就会显示在文本中。我从中获取内容。我已经知道如何加载 Web 内容,但我只想显示页面内容的一个片段(一段),而不是整个页面。有人可以告诉我该怎么做吗?

  {

import UIKit

class ViewController: UIViewController, UIWebViewDelegate {

@IBOutlet weak var cityText: UITextField!

@IBOutlet weak var webContent: UIWebView!

@IBAction func GoButtonPressed(sender: AnyObject) {

let url = NSURL (string: "http://www.weather-forecast.com");

let requestObj = NSURLRequest(URL: url!);

webContent.loadRequest(requestObj);

}

override func viewDidLoad() {

super.viewDidLoad()

// Do any additional setup after loading the view, typically from a nib.

}

override func didReceiveMemoryWarning() {

super.didReceiveMemoryWarning()

// Dispose of any resources that can be recreated.

}

}

}

  回答

  这是一个简单的视图控制器的例子,它只加载了 网站 的一部分。控制器有一个方法来选择一个 DOM 元素并只显示该元素。它非常简单,但功能强大,足以说明如何进一步开展这项工作。

  import UIKit

import JavaScriptCore

import WebKit

class TestViewController: UIViewController {

private weak var webView: WKWebView!

private var userContentController: WKUserContentController!

override func viewDidLoad() {

super.viewDidLoad()

createViews()

loadPage("https://dribbble.com/", partialContentQuerySelector: ".dribbbles.group")

}

private func createViews() {

userContentController = WKUserContentController()

let configuration = WKWebViewConfiguration()

configuration.userContentController = userContentController

let webView = WKWebView(frame: view.bounds, configuration: configuration)

webView.setTranslatesAutoresizingMaskIntoConstraints(false)

view.addSubview(webView)

let views: [String: AnyObject] = ["webView": webView, "topLayoutGuide": topLayoutGuide]

view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[topLayoutGuide][webView]|", options: .allZeros, metrics: nil, views: views))

view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[topLayoutGuide][webView]|", options: .allZeros, metrics: nil, views: views))

self.webView = webView

}

private func loadPage(urlString: String, partialContentQuerySelector selector: String) {

userContentController.removeAllUserScripts()

let userScript = WKUserScript(source: scriptWithDOMSelector(selector),

injectionTime: WKUserScriptInjectionTime.AtDocumentEnd,

forMainFrameOnly: true)

userContentController.addUserScript(userScript)

let url = NSURL(string: urlString)!

webView.loadRequest(NSURLRequest(URL: url))

}

private func scriptWithDOMSelector(selector: String) -> String {

let script =

"var selectedElement = document.querySelector('(selector)');" +

"document.body.innerHTML = selectedElement.innerHTML;"

return script

}

}

  上例中显示的视图控制器只加载照片,在 网站 内运行设计部分。

  另一个答案

  您将无法轻松做到这一点 - UIWebView 没有任何 API 来公开它正在加载的网页的结构,也没有控制/允许页面的部分加载。

  也许你可以抓取页面的内容并显示它,但是你会在将它加载到 UIWebView 之前这样做,并且在你抓取它之后,Web视图可能不是最好的显示它的方式。

  进行一些搜索 HTML 和网页抓取以了解该术语的含义。

  或者,如果你知道网页内容的结构,你可以在 UIWebView 加载时将 javascript 注入到页面中,javascript 会阻止页面的其他部分在以后显示(但如果你改变了它的 html 的结构)您的 JavaScript 可能不再有效)

  无论哪种方式,对于初学者来说,两者似乎都有些过于复杂,但除非您能够快速而称职地掌握它,否则您需要学习很多东西。

  另一个答案

  您可以在应用程序中安装天气 API,而不是从 网站 获取数据。这可能更快或更容易,因为大多数天气 API 可以选择要显示的信息。

  有关如何安装天气 API 的更多信息,请访问此网站。

  希望我解决了你的问题,托比

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线