Python 如何仅提取每个tr中的第一个td[0]
我试图确定如何最好地使用BeautifulSoup解析表的内容,目标是只提取每行('tr')中的第一列('td')。实际表中的行数根据搜索结果而变化,但每列中的数据是一致的。我试图使用循环,但没有做正确的事情 在下面的代码摘录中,我只是尝试使用循环打印每行('tr')的第一列('td')Python 如何仅提取每个tr中的第一个td[0],python,beautifulsoup,Python,Beautifulsoup,我试图确定如何最好地使用BeautifulSoup解析表的内容,目标是只提取每行('tr')中的第一列('td')。实际表中的行数根据搜索结果而变化,但每列中的数据是一致的。我试图使用循环,但没有做正确的事情 在下面的代码摘录中,我只是尝试使用循环打印每行('tr')的第一列('td') doc_req = requests.get(title_url, verify=False) soup = BeautifulSoup(doc_req.content, 'lxml') doc_body =
doc_req = requests.get(title_url, verify=False)
soup = BeautifulSoup(doc_req.content, 'lxml')
doc_body = soup.find('tbody', {'id': 'docs_body'})
doc_entries = doc_body.find_all('tr')
i = 0
for entries in doc_entries:
data = entries.find_all('td')
doc_date = data[0]
print(doc_date.text)
i+=1
我的意图是,脚本将返回示例表中2行的第一列(即记录的日期),然后停止
一旦我可以完成打印第一列(记录日期),我将尝试放大打印前3列(记录日期、类型、文档编号)
这是指向完整表的链接。我看到有嵌套的表。您可以使用CSS选择器
table#docs _table>tbody>tr>td:n子级(1)
(html_doc
是您的html代码):
印刷品:
2000-08-23
2000-04-12
2000-08-23 CERTIFICATE OF TITLE 00649594
2000-04-12 RELEASE 00254219
要放大,可以使用
zip()
builtin:
for rec_date, rec_type, doc_num in zip(soup.select('table#docs_table > tbody > tr > td:nth-child(1)'),
soup.select('table#docs_table > tbody > tr > td:nth-child(2)'),
soup.select('table#docs_table > tbody > tr > td:nth-child(3)')):
print(rec_date.text, rec_type.text, doc_num.text)
印刷品:
2000-08-23
2000-04-12
2000-08-23 CERTIFICATE OF TITLE 00649594
2000-04-12 RELEASE 00254219