我正在尝试编写一个for循环来检索一些数据,但我目前陷入困境。当第一个包含“ Primary NAICS Code”时,我需要获取第二个值
<td class="col_left"><strong>Primary NAICS Code</strong></td>
<td align="left">
311811 : Retail Bakeries
</td>
我的for循环显然不起作用
for i, elem in enumerate(all_trs):
inside_td = elem.find("td")
if "NAICS" in inside_td.text:
inside_td = elem.find("td")
print(inside_td.text)
非常感谢我能提供的任何帮助。预先非常感谢。
答案 0 :(得分:1)
未经测试,但代替:
for i, elem in enumerate(all_trs):
inside_td = elem.find("td")
if "NAICS" in inside_td.text:
inside_td = elem.find("td")
print(inside_td.text)
尝试一下:
for i, elem in enumerate(all_trs):
td_elems = elem.findAll('td')
if 'NAICS' in td_elems[0].text:
print(td_elems[1].text)
findAll
方法返回一个td
元素的列表,因此,只需获取此序列的句柄,您当然可以对其进行索引:)
find_all(自己,名称=无,attrs = {},递归= True,文本=无,限制=无,**扭曲)
提取与给定匹配的Tag对象的列表 标准。您可以指定标签的名称以及任何 您希望代码具有的属性。
find
方法仅返回第一个td
元素,基本上等于:findAll('td')[0]
查找(自身,名称=无,attrs = {},递归=真,文本=无,**假)
仅返回与此给定标签匹配的第一个孩子 条件。
答案 1 :(得分:0)
这是<td>
的下一个兄弟姐妹,其中包含感兴趣的字符串(下一个兄弟姐妹是换行符):
import re
...
soup.body.findAll('td', text=re.compile('Primary NAICS Code'))[0]\
.next_sibling.next_sibling
#<td align="left">
#
# 311811 : Retail Bakeries
# </td>