質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

1079閲覧

swiftでのスクレイピングでリンクを取得したい

yamato-0123

総合スコア2

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/10/24 02:54

現在スクレイピングを使って、リンクを取得しようとしています。
リンクの取得の仕方は、ネットの記事で見つけた方法を使っています。
下のコードで書いています。

swift

1for node in doc.xpath("//a | //link") { 2 print(node["href"])// href属性に設定されている文字列を出力 3 subjectLINK += node["href"]! 4} 5

printでは

print

1Optional("/Pages(省略)=ja")

のように表示されています。

取得したリンクを自分で作った配列に入れようとした際に下のようなエラーが出てしまいました。
ちなみに、nodeはXMLElement型です。

swift

1Operator function '+=' requires the types 'String' and 'String.Element' (aka 'Character') be equivalent

理想では、Optional()を外して、リンクだけを配列に入れたいのですが、可能でしょうか。教えていただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

質問内のコードでは明示されていませんが、文章の内容から subjectLINK が文字列の配列( [String] オブジェクト)であるものと推測できますので、その前提で回答します。

配列の文字列に、新たな要素として文字列をひとつ追加する場合には、 += 演算子ではなく append(_:) メソッドを使用します。
この点に関しては、次のリンク先の記事が参考になると思います。
https://swift.tecc0.com/?p=505

質問内のコードの該当箇所を修正すると、以下のようになるでしょう。

swift

1for node in doc.xpath("//a | //link") { 2 subjectLINK.append(node["href"]!) // ←この行を修正 3}

投稿2021/10/24 07:15

__k_san__

総合スコア177

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問