teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

誤字を修正

2020/02/04 09:35

投稿

Chanmoro
Chanmoro

スコア106

answer CHANGED
@@ -1,9 +1,9 @@
1
1
  scrapy を使うかどうかにはよりませんが、そのサイトにある他のページの URL を確実に知るためにはアクセスしたページの HTML に含まれる a タグを取得してリンク URL を取得することになります。
2
2
 
3
- 例えば、ご質問にある `https://tftactics.gg/champions` のサイトの場合 `https://tftactics.gg/champions/aatrox` の URL を取得したいということだと理解しました。
3
+ 例えば、ご質問にある `https://tftactics.gg/champions` のサイトの場合 `https://tftactics.gg/champions/aatrox` のような URL を取得したいということだと理解しました。
4
- この場合、サイトの構造を全く知らない状態であれば `https://tftactics.gg/champions` のページに含まれるリンク URL に `https://tftactics.gg/champions/aatrox` が含まれていて、これがたまたま `/champions` の1つ下の階層のページだったというように考えます。
4
+ この場合、サイトの構造を全く知らない状態であれば `https://tftactics.gg/champions` のページに含まれるリンク URL に `https://tftactics.gg/champions/aatrox` が含まれていて、これがたまたま `/champions` の1つ下の階層の URL だったというように考えます。
5
5
 
6
- 一方で、サイトの構造を事前に調査した結果 「`https://tftactics.gg/champions` のページに含まれれる `a.characters-item` の属性にセットされているリンク先 URL には `/champions` の1つ下の階層の URL がセットされている」ということが分かっていれば、 `/champions` にアクセスして該当のリンクを抽出すれば取得できるということになります。
6
+ 一方で、サイトの構造を事前に調査した結果 **「`https://tftactics.gg/champions` のページに含まれれる `a.characters-item` の属性にセットされているリンク先 URL には `/champions` の1つ下の階層の URL がセットされている」** ということが分かっていれば、 `/champions` にアクセスして該当のリンクを抽出すれば取得できるということになります。
7
7
 
8
8
  なので、サイトの構造を全く知らない状態でいきなり「`/champions` の1つ下の階層の URL を全て取得する」ということはできないのでその場合はそのドメインの全ての URL を取得できるまでは目的の URL を全て取得できないと考えることになりますが、
9
9
  サイトの構造が事前に分かっているもしくは予想できる場合は、それを前提として特定のページをクロールすることで目的の URL が全て手に入ると考えることができます (前述の例のように `/champions` のページから `/champions` の1つ下の階層の URL が全て取得できると考えるということです)。