消毒&&建立网址

时间:2016-06-17 09:13:30

标签: python beautifulsoup

是否可以使用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

非常感谢。

2 个答案:

答案 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