使用Python Beautifulsoup进行抓取,获取href的url,该url是一个链接

2024-10-01 04:53:23 发布

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

使用Python/BeautifulSoup替换一些文档URL,我试图获得a href的实际链接。现在,href不是一个HTML链接,而是一个“嵌入”链接,如果我在浏览器中将鼠标悬停在它上面,它会给出实际的URL

页面的“查看源”具有以下内容: <li class="toctree-l2"><a class="reference internal" href="accessanalyzer.html">AccessAnalyzer</a></li>

现在,以下代码确实起作用了,并为我提供了href字符串:

for i in soup.findAll('a', attrs={'class': 'reference internal'}):
        if "AccessAnalyzer" in i:
            print(i)
            link = i['href']
            print(link)

(output)
<a class="reference internal" href="accessanalyzer.html">AccessAnalyzer</a>
accessanalyzer.html

我试图获取的是accessanalyzer.html的实际URL,它是:

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/accessanalyzer.html

当我将鼠标悬停在href上或单击它时,我将进入该URL

如何获取URL? 还有,有一个包含嵌入链接而不是实际文本的href的概念的名称是什么?(这样我可以做更多的研究)


Tags: in文档url链接htmllinkliclass
2条回答

在检索HREF值之后,您必须进行一些额外的处理

您需要做的是获取源页面的基本URL路径,并附加HREF值

假设源页面是“https://example.com/stuff/source.html,该页面包含一个带有HREF“foo.html”的链接。您需要获取源页面的基本URL路径(即“https://example.com/stuff/“并附加HREF值以获取”https://example.com/stuff/foo.html“

您可以使用dirname函数来帮助您:

>>> dir = os.path.dirname('https://example.com/stuff/source.html')
>>> dir
'https://example.com/stuffl'

然后将两部分连接在一起:

>>> os.path.join(dir, "foo.html")
'https://example.com/stuff/foo.html'

what's described here.类似,我相信您实际上需要某种webdriver自动机(Selenium等)来模拟悬停并获取数据

相关问题 更多 >