今天,我一直在寻找到一个小文件上传和我从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)
你不能搜索文本两个标记之间,没有。 你可以找到第一<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>
标签。