我通常使用硒,但我想我会试试bs4!
我试图在网站上找到这个特定的文本,在下面的例子中,我想要最后一个
-189305014
<div class="info_container">
<div id="profile_photo">
<img src="https://pbs.twimg.com/profile_images/882103883610427393/vLTiH3uR_reasonably_small.jpg" />
</div>
<table class="profile_info">
<tr>
<td class="left_column">
<p>Twitter User ID:</p>
</td>
<td>
<p>189305014</p>
</td>
</tr>
这是我正在使用的脚本-
TwitterID = soup.find('td',attrs={'class':'left_column'}).text
这将返回
Twitter User ID:
您可以从包含"Twitter User ID:"
:的标签搜索下一个<p>
标签
from bs4 import BeautifulSoup
txt = '''<div class="info_container">
<div id="profile_photo">
<img src="https://pbs.twimg.com/profile_images/882103883610427393/vLTiH3uR_reasonably_small.jpg" />
</div>
<table class="profile_info">
<tr>
<td class="left_column">
<p>Twitter User ID:</p>
</td>
<td>
<p>189305014</p>
</td>
</tr>
'''
soup = BeautifulSoup(txt, 'html.parser')
print(soup.find('p', text='Twitter User ID:').find_next('p'))
打印:
<p>189305014</p>
或class="profile_info"
:内的最后一个<p>
元素
print(soup.select('.profile_info p')[-1])
或class="left_column"
:的第一个同级
print(soup.select_one('.left_column + *').text)
使用以下代码获得所需的输出:
TwitterID = soup.find('td',attrs={'class': None}).text
要只从第二个<p>
标签中获取数字,您可以过滤字符串是否为数字((:
from bs4 import BeautifulSoup
html = """<div class="info_container">
<div id="profile_photo">
<img src="https://pbs.twimg.com/profile_images/882103883610427393/vLTiH3uR_reasonably_small.jpg" />
</div>
<table class="profile_info">
<tr>
<td class="left_column">
<p>Twitter User ID:</p>
</td>
<td>
<p>189305014</p>
</td>
</tr>"""
soup = BeautifulSoup(html, 'html.parser')
result = ''.join(
[t for t in soup.find('div', class_='info_container').text if t.isdigit()]
)
print(result)
输出:
189305014