是否可以使用beautifulsoup(python)来提取网页的绝对网址而不是网页的相对网址?
例如,当我废弃http://bing.com并询问href链接时: 对于soup.findAll('a')中的链接:
它返回以及相对于绝对URL:
http://bing.com/?scope=web&FORM=Z9LH
/maps/?FORM=Z9LH3
/news?FORM=Z9LH4
/explore?FORM=Z9LH5
/profile/history?FORM=Z9LH6
http://fr.msn.com/
http://www.office.com?WT.mc_id=O16_BingHP
非常感谢。
答案 0 :(得分:2)
如果您只想匹配绝对网址,最简单的方法就是使用CSS selector:
^=
此处from urlparse import urljoin
# Python 3: from urllib.parse import urljoin
base_url = "http://bing.com"
for link in soup.find_all("a", href=True):
absolute_url = urljoin(base_url, link["href"])
print(absolute_url)
表示"以"。
如果要查找所有链接并使用相对网址生成绝对网址,请使用urljoin()
:
urljoin()
请注意,如果网址已经是绝对的,CoordinatorLayout
会保持原样。
答案 1 :(得分:0)
使用filter()
和lambdas。
urlList = filter(lambda aTag: aTag['href'].startswith('http'), soup('a'))
应该这样做。
简而言之,请检查链接的“href”属性是否以字符串“http”开头。
如果要从亲戚中重新创建绝对URL,可以执行以下操作:
urlThatCurrentlyScraping = 'http://bing.com/something/...'
for link in soup('a'):
if not link['href'].startswith('http'):
fixedLinkHref = urlThatCurrentlyScraping + link['href']
else:
fixedLinkHref = link['href']
# do something