我已经与BeautifulSoup和Selenium成功合作了几个星期了。然而,我发现自己陷入了无法解开的境地。
我需要从表格的前6行左右提取html。这些行不共享任何类,ID或类似。
表格结构:
<table class="Table">
<tr class="Table_Header">
<td colspan="2">Some Text</td>
</tr>
<tr>
<td class="Class2">Some Text</td>
<td><span class="Class"></span>Some Text</td>
</tr>
<tr>
<td class="Class2">Some Text</td>
<td>Some Text</td>
</tr>
<tr>
<td class="Class2">Some Text</td>
<td>Some Text</td>
</tr>
<tr class="Class3">
<td class="Class2"> Some Text </td>
<td>Some Text</td>
</tr>
<tr class="Class3">
<td class="Class2">Some Text</td>
<td>Some Text</td>
</tr>
<tr>
<td class="Class2">Some Text</td>
<td> <div class="Class4">Some Text</div>
<div class="Class4">Some Text</div>
</td>
</tr>
这个表一直在继续,保持着这种结构,但看似随机的类弹出。
基本上我需要返回前六个tr。我已经尝试了几种返回整个表或单个tr的方法。
有什么想法吗?
提前致谢!
答案 0 :(得分:0)
所以你试图从表中获得前6个tr?如果我正确地理解了这个问题,那么我有一个类似的问题,我需要获得第一个400 td。也许下面的代码会有帮助吗?
也许像
for row in get_log().findAll('tr'):
for cell in row.findAll('td'):
print (cell.text)
logfile.write('{}\n'.format(cell.text))
i += 1
if i == 400:
break
另外,让我指出你用来解决我自己的问题的文章,好的东西接近尾声,因为它假设你几乎什么都不知道。 https://first-web-scraper.readthedocs.org/en/latest/
编辑: 使用布恩县的表作为来源:
import requests
from BeautifulSoup import BeautifulSoup
url = 'http://www.showmeboone.com/sheriff/JailResidents/JailResidents.asp'
response = requests.get(url)
html = response.content
soup = BeautifulSoup(html)
table = soup.find('table', attrs={'class': 'collapse shadow BCSDTable'})
i = 0
for row in table.findAll('tr'):
print (row.prettify())
i += 1
print i
if i == 6:
break
这会输出大量信息,所以我不会发布它。也许你想在每个tr中改进你想要的东西?