実現したいこと
一つのURL(OpenURL=親URL)を入力すると、そのURL内にあるリンク先を全て取得する。
なお、取得するURLは親URLを含んでいる(外部リンクのURLは取得しない)。
この操作を、全てのリンク先のURLで行い、
結果的に親URLに紐づく子URL全てを取得することが出来る。
発生している問題・分からないこと
while処理中、i=1となったときに
「if url.find(OpenURL)==0:」の箇所で
'NoneType' object has no attribute 'find'
のエラーが発生する
該当のソースコード
python
1#https://programmer-life.work/python/get-child-href 2import requests, bs4 3import re 4 5#https://atmarkit.itmedia.co.jp/ait/articles/2401/30/news027.html 6def remove_repetition(iterable): 7 result = [] 8 for item in iterable: 9 if item not in result: 10 result.append(item) 11 return result 12 13OpenURL='https://tonari-it.com' 14res = requests.get(OpenURL) 15OutputToCSV=[OpenURL] 16 17i=0 18while True: 19 soup = bs4.BeautifulSoup(requests.get(OutputToCSV[i]).text, "html.parser") 20 list=[] 21 for element in soup.find_all("a"): 22 url = element.get("href") 23 if url.find(OpenURL)==0: 24 list.append(url) 25 list=remove_repetition(list) 26 OutputToCSV.extend(list) 27 OutputToCSV = remove_repetition(OutputToCSV) 28 if len(OutputToCSV)>100:#強制的に停止する数 29 OutputToCSV.append("continue") 30 break 31 if OutputToCSV[i]==OutputToCSV[-1]:#末尾まで来たらBraek 32 break 33 i+=1 34 35 36print(OutputToCSV)
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
- 親URLを別のURL(https://tonari-it.com/profile/)に変更したところ、i=0のタイミングでも同様のエラーが発生した
- time.sleep(10)を処理途中に追加しても同様の事象が発生した
補足
特になし
回答1件
あなたの回答
tips
プレビュー