【问题标题】:How to get titles name from a news website?如何从新闻网站获取标题名称?
【发布时间】:2018-05-03 09:23:59
【问题描述】:

我想从没有 RSS Feed 的新闻网站获取数据,我只想获取标题名称,并且我正在使用此代码 -

var url = NSURL(string: "http://www.gulf-times.com/stories/c/192/0/Sport")

        if url != nil {
            let task = URLSession.shared.dataTask(with: url! as URL, completionHandler: { (data, response, error) -> Void in
                print(data)

                if error == nil {

                    var urlContent = NSString(data: data!, encoding: String.Encoding.ascii.rawValue) as NSString!

                    print(urlContent)
                }
            })
            task.resume()
        }

问题是,我无法获得标题价值-

【问题讨论】:

  • urlContent的值是多少
  • 没找到你,你要什么?
  • 我不是一个快速的开发者,但我认为这是一个普遍的问题而不是语言。因此,如果您可以帮助我解决 urlContent 所持有的价值,那么我认为可以提供解决方案。
  • 当我打印 urlContect 的值时,它的提供-justpaste.it/1dpot
  • 而不是那些在你的图像中突出显示并且需要一个javascript解析器的标题,你不能使用一些HTML工具从HTML中提取相同的标题吗? IE。它们似乎都嵌入在<h3> 元素的下方,类bord-192。该组合是否仅适用于该页面上的标题?

标签: swift nsurlsession nsurl


【解决方案1】:

如果您对 RegEx 感到满意,请使用以下模式

/title = "(.*)"/g

这会给你所有的标题。

修改:

请像下面这样使用

let matched = matches(for: "title = \"(.*)\"", in: contentOfPage)

匹配:函数

func matches(for regex: String, in text: String) -> [String] {

    do {
        let regex = try NSRegularExpression(pattern: regex)
        let results = regex.matches(in: text,
                                    range: NSRange(text.startIndex..., in: text))
        return results.map {
            String(text[Range($0.range, in: text)!])
        }
    } catch let error {
        print("invalid regex: \(error.localizedDescription)")
        return []
    }
}

得到以下结果

[  
   "title = \"Al-Khelaifi voted Asian tennis Chairman\"",
   "title = \"Dimitrov downs Goffin for ATP Tour Finals crown\"",
   "title = \"Coach Lehmann calls for Australia to get behind Ashes selection\"",
   "title = \"Federer expects great things from returning trio\"",
   "title = \"Whateley wins Air Maroc League second stage\"",
   "title = \"Qatar-based Frijns finishes strong as Oliphant wins\"",
   "title = \"Sutton faces tough road ahead to get Chinese on track\"",
   "title = \"Qatar, Japan sign deal to import, export race horses\"",
   "title = \"Islanders deny Lightning comeback for third straight win\"",
   "title = \"Curry leads Golden Warriors fightback after Sixers blitz\"",
   "title = \"Fleetwood claims European Order of Merit as Rose falters\"",
   "title = \"Challengers win thriller against City Exchange\""
]

【讨论】:

  • 修改了我的答案
  • 它的返回 Bool(false)
  • 终于拿到数据了,感谢您宝贵的时间:)
  • 如何创建此路径"title = \"(.*)\""?你能告诉我吗?
  • 在这里您可以测试您的正则表达式以根据您的需要进行匹配。我给出的正则表达式匹配以"title = \" 开头并以" 结尾的内容。
【解决方案2】:

你得到的 url 的响应是 String 然后只需将字符串解析为子字符串。

例如标题是var title = 和var brief = 之间的子字符串。

split、components(separatedBy:_)等String方法都可以实现。

【讨论】:

  • 不明白,确切地说。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-10
  • 2011-02-14
  • 2013-07-25
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 2013-02-23
相关资源
最近更新 更多