我正在使用python和beautifulsoup来刮擦一张桌子。在此表中,每行都有多个链接。我只对每一行的第一个链接感兴趣。如何跳过该行的其他链接?
答案 0 :(得分:0)
只需使用find()代替find_all()
。 find()
找到第一个匹配项并停止:
find_all()方法扫描整个文档以查找结果, 但有时你只想找到一个结果。如果你知道一份文件 只有一个标签,扫描整个标签是浪费时间 文件寻找更多。而不是每次传递limit = 1 你调用find_all,你可以使用find()方法。
演示:
>>> from bs4 import BeautifulSoup
>>> data = """
... <html>
... <head>
... <title>Test</title>
... </head>
... <body>
... <div>
... <a href="">First Link</a>
... <a href="">Second Link</a>
... <a href="">Third Link</a>
... </div>
... </body>
... </html>"""
>>> soup = BeautifulSoup(data)
>>> soup.find_all('a')
[<a href="">First Link</a>, <a href="">Secod Link</a>, <a href="">Third Link</a>]
>>> soup.find('a')
<a href="">First Link</a>
希望有所帮助。
答案 1 :(得分:0)
以下是您可以执行此操作的示例:
## first find all the tr tags
trs = soup.find_all("tr")
## then for each tr find the a tag from there
for tr in trs:
tr.find("a") ## finds the first link
答案 2 :(得分:0)
我只是自己解决这个问题,以为我会给出我的解决方案,该解决方案基于@Sabuj Hassan的上述回答。下面的代码将拉出每个链接,并将其添加到名为“链接”的列表中,然后可以将其添加到df中。希望这可以帮助某个人!
hr.break{ background: 0; border: 0; margin: 0;}