<tr bgcolor="#FFFFFF">
<td class="tablecontent" scope="row" rowspan="1">
<a href="http://netprofile-us2/netprofile/npIndex.do?cpyKey=80823">ZURICH AMERICAN INSURANCE COMPANY</a>
</td>
<td class="tablecontent" scope="row" rowspan="1">
FARMERS GROUP INC (14523)
</td>
<td class="tablecontent" scope="row">
znaf
</td>
<td class="tablecontent" scope="row">
anhm
</td>
</tr>
我有一个HTML文档,其中包含多个tr
标记。我想从每个href
标记下的第一个td
和第三个td
标记中的数据中提取tr
链接。如何实现这一目标?
答案 0 :(得分:1)
您可以找到所有tr
元素,迭代它们,然后针对内部td
元素执行特定于上下文的搜索,并获取第一个和第三个元素:
for tr in soup.find_all('tr'):
cells = tr.find_all('td')
if len(cells) < 3:
continue # safety pillow
link = cells[0].a['href'] # assuming every first td has an "a" element
data = cells[2].get_text()
print(link, data)
作为旁注,根据您在HTML解析中要完成的工作,我通常会发现pandas.read_html()
是一种非常方便的方法,可以将HTML表解析为dataframes并在之后处理数据帧,这是非常方便的数据结构。
答案 1 :(得分:0)
您可以使用css选择器nth-of-type
浏览td
这是一个样本“
soup = BeautifulSoup(html, 'html.parser')
a = soup.select('td:nth-of-type(1) a')[0]
href = a['href']
td = soup.select("td:nth-of-type(3)")[0]
text = td.get_text(strip=True)