清理并生成u

2024-04-25 20:28:26 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有可能,whithbeauthulsoup(python)可以提取网页的绝对url而不是相对url?在

例如,当我废弃http://bing.com并询问a href links时: 用于链接输入芬德尔汤(‘a’):

它返回相对URL和绝对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

非常感谢。在


Tags: formcomwebhttpurl网页链接links
2条回答

如果只想匹配绝对URL,最简单的方法是使用CSS selector

soup.select("a[href^=http]")

这里^=表示“以开头”。在

如果要定位所有链接并用相对URL生成绝对URL,请使用^{}

^{pr2}$

注意,如果URL已经是绝对的,urljoin()将保持原样。在

使用filter()和lambdas。在

urlList = filter(lambda aTag: aTag['href'].startswith('http'), soup('a'))

应该会成功的。在

简而言之,检查链接的“href”属性是否以字符串“http”开头。在

如果要从相对URL重新创建绝对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

相关问题 更多 >