Python a href をスクレイピングする方法

Python

Pythonで調べたことを記事にして備忘録としています。皆さんの役に立てれば幸いです。

使用環境

  • OS:Windows10
  • Python:3.9.7

Pythonバージョンの調べ方は

Windowsではコマンドプロンプトを開き【python -V】を打ち込み実行します。

赤線の数字がPythonのバージョンになります。

a href をスクレイピングする方法

Pythonでスクレイピングをしていると↓のような<a href を取得したくなる時が多々あります。

この場合は下記のコードを用意します。

url = ‘~~~~~~~~~~’
res = requests.get(url)
res.encoding = res.apparent_encoding
soup = BeautifulSoup(res.text,’html.parser’)

urlの~~~には取得したいhref属性のあるurlを打ち込んでください。

例:url = ‘https://www.yahoo.co.jp’

その後、下記コードを用意します。

url_links = soup.find_all(‘a’)

どのページも(‘a’)が大量にあるためfind_allで問題ないと思います。

上のコードだけだと(‘a’)を探すだけなのでfor文で(‘href’)を確認します。

yahooのページを確認すると↓のようになります。

for link in url_links:
print(link.get(‘href’))

これですべて取得できました。

うん。。。取得できた。。。できたけど。。。

不要なものまで取得してしまっている。。。。

と、なると思います。

なので、if分を使用して(https://news.yahoo.co.jp/pickup)から始まっているurlを取得します。

コードは↓のようになります。

for link in url_links:
if link.get(‘href’).startswith(‘https://news.yahoo.co.jp/pickup/’) == True:
print(link.get(‘href’))

startswith(‘https://news.yahoo.co.jp/pickup/’) で最初の文字が

(https://news.yahoo.co.jp/pickup)から始まっているurlのみを取得しています。

終わりの文字を確認するにはendswithを使用します。

まとめ

soup.find_all(‘a’)で全ての項目を探し出し

for文・if文・startswithを使用して取得したいurl抽出もできました。



コメント

タイトルとURLをコピーしました