_Scrape_ 块引用 bs4 后的文本
_Scrape_ text after blockquote bs4
我在 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><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中的代码:
page = requests.get(site)
soup = BeautifulSoup(page.content, 'html.parser')
rounds = soup.find('p', align="left")
matches_links = rounds.find_all('a')
我得到了所有 link 的一些评论和文本。在 </blockquote></blockquote>
之后我什么也得不到。这两个块引用在页面代码中是不可见的,只有当我调试 Python 代码时我才能在 soup
中看到它。在 soup
中,我拥有所有 HTML 代码,但在 rounds
中,代码以 <tt>text after comment</tt></p>
.
结束
有什么方法可以得到“link我想要的”和“我想要的文字”吗?
如果您查看 HTML 代码,您会发现 </blockquote></blockquote>
之前有 </p>
。这意味着您的变量 rounds
不包含您想要的 link 。在这个 <p>
标签之后搜索下一个 <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>
我在 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><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中的代码:
page = requests.get(site)
soup = BeautifulSoup(page.content, 'html.parser')
rounds = soup.find('p', align="left")
matches_links = rounds.find_all('a')
我得到了所有 link 的一些评论和文本。在 </blockquote></blockquote>
之后我什么也得不到。这两个块引用在页面代码中是不可见的,只有当我调试 Python 代码时我才能在 soup
中看到它。在 soup
中,我拥有所有 HTML 代码,但在 rounds
中,代码以 <tt>text after comment</tt></p>
.
有什么方法可以得到“link我想要的”和“我想要的文字”吗?
如果您查看 HTML 代码,您会发现 </blockquote></blockquote>
之前有 </p>
。这意味着您的变量 rounds
不包含您想要的 link 。在这个 <p>
标签之后搜索下一个 <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>