簡體   English   中英

_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')

我得到了一些評論和文本的所有鏈接。 </blockquote></blockquote>之后我什么也得不到。 這兩個塊引用在頁面代碼中是不可見的,只有當我調試我的 Python 代碼時我才能在soup中看到它。 soup中,我有所有 HTML 代碼,但在rounds中,代碼以<tt>text after comment</tt></p>結尾。

有什么方法可以獲得“我想要的鏈接”和“我想要的文字”?

如果您查看 HTML 代碼,您會發現在</blockquote></blockquote>之前有</p> > 。 這意味着您的可變rounds不包含您想要的鏈接。 在此<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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM