Python的HTML解析两个标记之间(Python HTML Parsing Between tw

2019-10-20 11:59发布

今天,我一直在寻找到一个小文件上传和我从API页以下响应。

upload_success<br>http://www.filepup.net/files/R6wVq1405781467.html<br>http://www.filepup.net/delete/Jp3q5w1405781467/R6wVq1405781467.html

我需要这两者之间的部分<br>标签。 我使用Beautifulsoup这个代码,但它返回无。

fpbs = BeautifulSoup(filepup.text)
finallink = fpbs.find('br', 'br')
print(finallink)

Answer 1:

你不能搜索文本两个标记之间,没有。 你可以找到第一<br>标签,然后取它的下一个兄弟 ,但是:

>>> soup = BeautifulSoup('upload_success<br>http://www.filepup.net/files/R6wVq1405781467.html<br>http://www.filepup.net/delete/Jp3q5w1405781467/R6wVq1405781467.html')
>>> soup.find('br')
<br/>
>>> soup.find('br').next_sibling
u'http://www.filepup.net/files/R6wVq1405781467.html'

可以使用一个CSS选择器的搜索来搜索相邻的兄弟 ,然后抓住前面的兄弟姐妹; 到CSS只有标签是兄弟姐妹,但BeautifulSoup文本节点算过。

所述相邻的选择是+ 2个CSS选择之间,并且选择两个的第二; br + br会选择任何br自带第二个标签。

再加上,可以是一个非常强大的组合父节点(比如一个特定的ID或类):

>>> soup = BeautifulSoup('''\
... <div id="div1">
...     some text
...     <br/>
...     some target text
...     <br/>
...     foo bar
... </div>
... <div id="div2">
...     some more text
...     <br/>
...     select me, ooh, pick me!
...     <br/>
...     fooed the bar!
... </div>
... ''')
>>> soup.select('#div2 br + br')[0]
<br/>
>>> soup.select('#div2 br + br')[0].previous_sibling
u'\n    select me, ooh, pick me!\n    '

这选择了一个非常具体的文本节点两者之间<br>标签,在一个特定<div>标签。



文章来源: Python HTML Parsing Between two tags