Python _刮除块引号bs4后的文本
我在HTML中有类似的内容:Python _刮除块引号bs4后的文本,python,web-scraping,beautifulsoup,blockquote,Python,Web Scraping,Beautifulsoup,Blockquote,我在HTML中有类似的内容: <p align="left"><strong><tt> some text:</tt></strong><tt> (8/4)</tt><a href="some link"><tt>some other text</tt></a><tt>, (9/4)</tt&
<p align="left"><strong><tt>
some text:</tt></strong><tt> (8/4)</tt><a href="some link"><tt>some other text</tt></a><tt>, (9/4)</tt><a href="some other link"><tt><br/>
some text:</tt></strong><tt>, (19/6)</tt><!--a href="some link in comment"--><tt>text after comment</tt></p></blockquote></blockquote><tt>, </tt><a href="link i want"><tt>text i want</tt></a><strong><tt><br/>
...
</p>
之后我得到了一些评论和文字的链接。我在
之后什么也拿不到。这两个块引号在页面代码中是不可见的,只有在调试Python代码时,我才能在soup
中看到它。在汤中
我有所有的HTML代码,但在回合中
代码以注释后的文本结束
是否有任何方法可以获取“我想要的链接”和“我想要的文本”?如果您查看HTML代码,您将看到在
之前有
。这意味着您的变量rounds
不包含您想要的链接。搜索下一个,(9/4)
...
'''
soup=BeautifulSoup(txt,'html.parser')
匹配的链接=汤。选择一个('p[align=“left”]~a')
打印(匹配的链接)
印刷品:
<a href="link i want"><tt>text i want</tt></a>
看起来您要查找的数据是动态添加到DOM中的。你应该考虑使用一个无头浏览器,使用像SeuluIM这样的工具进行擦除,但是在回合代码结束后,在评论“文本上”,这是因为你的“p对齐”=“左”>标签结束。there@GaganTK你是对的,我错过了。谢谢你,你当然是对的。但是你的解决方案对我不起作用,matched\u link
是空的。请您解释一下'p[align=“left”]~a'
的确切含义是什么?@dylop[align=“left”]~a
是CSS选择器,它将选择前面有元素的下一个
标记。您可以尝试打印(soup.find_all('a'))
并查看所需的
标记是否确实存在。
from bs4 import BeautifulSoup
txt = '''
<p align="left"><strong><tt>
some text:</tt></strong><tt> (8/4)</tt><a href="some link"><tt>some other text</tt></a><tt>, (9/4)</tt><a href="some other link"><tt><br/>
some text:</tt></strong><tt>, (19/6)</tt><!--a href="some link in comment"--><tt>text after comment</tt></p></blockquote></blockquote><tt>, </tt><a href="link i want"><tt>text i want</tt></a><strong><tt><br/>
...
</p>
'''
soup = BeautifulSoup(txt, 'html.parser')
matched_link = soup.select_one('p[align="left"] ~ a')
print(matched_link)
<a href="link i want"><tt>text i want</tt></a>