前提・実現したいこと
プログラミングを初めて1週間ほどの初心者です。
特定のサイトでURLを取得する、というプログラムのコードについて質問です。
Youtube上でWebスクレイピングを学習しており、動画投稿者の方と同じようにプログラミングをしたところ、異なる結果となりました。
コード内容は、特定のサイト内でキーワード検索をした結果が複数ページある場合に、それぞれのページのURLを取得するというものです。
以下のコードをそのまま実行した場合、該当のキーワードでは1ページしか検索結果がありません。
if文を用いてリストが空になるエラーが表示されるのを回避しているのですが、私のほうで実行すると以下のような結果が返ってきます。
['https://kino-code.work/?s=javascript',
'https://kino-code.work/?s=javascript&paged=1',
'https://kino-code.work/?s=javascript&paged=2',
'https://kino-code.work/?s=javascript&paged=3']
該当サイト内で'javascript'を検索すると、ページは1つしかないので、以下のように1つだけ表示される想定なのですが、うまくいかず困っています。
['https://kino-code.work/?s=javascript']
発生している問題・エラーメッセージ
エラーはありません。
該当のソースコード
python
1 2from bs4 import BeautifulSoup 3import requests 4import pandas as pd 5import time 6 7keyword = 'javascript' 8 9url = 'https://kino-code.work/?s={}'.format(keyword) 10 11r = requests.get(url) 12time.sleep(3) 13 14soup = BeautifulSoup(r.text,'html.parser') 15page_na = soup.find(class_="pagination") 16page_num = page_na.find_all(class_="page-numbers") 17 18pages = [] 19for i in page_num: 20 pages.append(i.text) 21 22urls = [] 23 24if not pages: 25 urls = ['https://kino-code.work/?s={}'.format(keyword)] 26else: 27 last_page = int(pages[-2]) 28 29for i in range(1,last_page+1): 30 url = 'https://kino-code.work/?s={}'.format(keyword) + '&paged={}'.format(i) 31 urls.append(url) 32 33urls 34
試したこと
python
1 2keyword = 'pyhton' 3
該当サイト内で'python'と検索すると3ページ存在しており、そちらの場合は以下のような結果が返ってきました。
['https://kino-code.work/?s=python&paged=1',
'https://kino-code.work/?s=python&paged=2',
'https://kino-code.work/?s=python&paged=3']
補足情報(FW/ツールのバージョンなど)
必要に応じて追記します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/22 11:12