我是网络抓取的新手,在使用 robobrowser 提交表单后尝试解析网站。我得到了正确的数据(当我这样做时我可以查看它:print(browser.parsed))但在解析它时遇到了麻烦。网页源代码的相关部分如下所示:
<div id="ii">
<tr>
<td scope="row" id="t1a"> ID (ID Number)</a></td>
<td headers="t1a">1234567 </td>
</tr>
<tr>
<td scope="row" id="t1b">Participant Name</td>
<td headers="t1b">JONES, JOHN </td>
</tr>
<tr>
<td scope="row" id="t1c">Sex</td>
<td headers="t1c">MALE </td>
</tr>
<tr>
<td scope="row" id="t1d">Date of Birth</td>
<td headers="t1d">11/25/2016 </td>
</tr>
<tr>
<td scope="row" id="t1e">Race / Ethnicity</a></td>
<td headers="t1e">White </td>
</tr>
如果我做
in: browser.select('#t1b")
我得到:
out: [<td id="t1b" scope="row">Inmate Name</td>]
而不是琼斯,约翰。
我能够获得相关数据的唯一方法是:
browser.select('tr')
这将返回 29 个列表中的每一个,每个 'tr' 我可以将其转换为文本并搜索相关信息。
我也尝试过创建一个 BeautifulSoup 对象:
x = browser.select('#ii')
soup = BeautifulSoup(x[0].text, "html.parser")
但它丢失了所有标签/ID,所以我不知道如何在其中搜索。
有没有一种简单的方法可以让它使用 'tr' 遍历每个元素并获取实际数据而不是标签,以反对重复转换为字符串变量并通过它进行搜索?
谢谢