получение информации об ингредиентах из tesco HTML Xcode Swift4 - PullRequest
0 голосов
/ 05 декабря 2018

Я использую swiftsoup!я пытаюсь скопировать эту информацию, чтобы я мог посмотреть ингредиенты формы

<p class="product-info-block__content">Sugar, Cocoa Mass, Cocoa        Butter, Dried Skimmed <strong>Milk</strong>, Dried Whey (from <strong>Milk</strong>), Vegetable Fats (Palm, Shea), <strong>Milk</strong> Fat, Emulsifiers (<strong>Soya</strong> Lecithin, E476), Orange Oil, Flavouring, Milk Solids 14 % minimum, Cocoa Solids 25 % minimum, Contains Vegetable Fats in addition to Cocoa Butter</p>

, однако, поскольку это не первый тег P в коде, я не могу получить к нему доступ ... мой код выглядит следующим образом

 let url9 = URL(string: "https://www.tesco.com/groceries/en-GB/products/301638217")!

    let task = URLSession.shared.downloadTask(with: url9) { localURL, urlResponse, error in
        if let localURL = localURL {
            if let string = try? String(contentsOf: localURL) {
              //  print(string)
                //self.srcCode = string
                //print (srcCode)
                print("boom")
                var allergens9 = [String]()
                do{
                    let doc4 : Document = try SwiftSoup.parse(string)
                    print("made doc")
                    let morrisonPTag : Element = try doc4.select("p").first()!
                    print("made pTag")
                    let strongs = try  morrisonPTag.select("strong")
                    for strong in strongs.array(){
                        let text = try strong.text()

                        if !allergens9.contains(text){
                            allergens9.append(text)
                            print("allergen")
                           print(allergens9)
                        }
                    }


                }catch{print(error.localizedDescription)}

            }


        }

поэтому строку, которую я здесь имею

 let morrisonPTag : Element = try doc4.select("class=product blocks").first()!

, необходимо отредактировать, чтобы найти другой тег P вместо первого ....... howМогу ли я сделать это?сейчас код заканчивается на .first ()!

1 Ответ

0 голосов
/ 14 апреля 2019

Вы можете получить все элементы класса одновременно;

do { let els: Elements = try doc!.getElementsByClass("product blocks")

     for link: Element in els.array() {
       // process them here
     }
  } catch
  {
     print("error")
  }
...