正規表現を使用すると、正しいURLを取得するためにurljoinを使用するリンクを取得できます。
import requests
import re
try:
from urlparse import urljoin # Python2
except ImportError:
from urllib.parse import urljoin # Python3
from bs4 import BeautifulSoup
url= 'https://uk-air.defra.gov.uk/latest/currentlevels'
r = requests.get(url, headers={'User-Agent': 'Not blank'})
data = r.text
soup = BeautifulSoup(data, 'html.parser')
for elem in soup('a', href=re.compile(r'site_id')):
print (elem.text)
print (urljoin(url,elem['href']))
出力:
Auchencorth Moss
https://uk-air.defra.gov.uk/networks/site-info?site_id=ACTH
Bush Estate
https://uk-air.defra.gov.uk/networks/site-info?site_id=BUSH
Dumbarton Roadside
https://uk-air.defra.gov.uk/networks/site-info?site_id=DUMB
Edinburgh St Leonards
https://uk-air.defra.gov.uk/networks/site-info?site_id=ED3
Glasgow Great Western Road
https://uk-air.defra.gov.uk/networks/site-info?site_id=GGWR
Glasgow High Street
https://uk-air.defra.gov.uk/networks/site-info?site_id=GHSR
...
あなただけのアバディーンの使用が必要な場合:
for elem in soup('a',href=re.compile(r'site_id'), string='Aberdeen'):
の代わり:
for elem in soup('a', href=re.compile(r'site_id')):
出力:
Aberdeen
https://uk-air.defra.gov.uk/networks/site-info?site_id=ABD
は[THIS](https://stackoverflow.com/a/1080472/7654934)を見てみましょう。お役に立てれば! –
私が掻き取ろうとしているページはhttps://uk-air.defra.gov.uk/latest/currentlevelsで、私はテーブルの最初の列にあるサイト名に対応するURLに興味があります。 https://uk-air.defra.gov.uk/networks/site-info?site_id=ACTH最初の名前はAuchencorth Mossです – Paulos
@ N.Ivanov私は同様のことを試しましたが、問題は多くの異なるページ上のリンクの種類、私はちょうど上記のリンクが欲しい – Paulos