我有一个html文件,我使用Beautiful Soup 4进行了解析,这是我感兴趣的部分
[
<td>Name :</td>, <td>xyz</td>,
<td>Mobile :</td>, <td>180-14587962</td>,
<td>Company:</td>, <td>abc Comp</td>,
<td>Name :</td>, <td> </td>,
<td>Mobile :</td>, <td> </td>,
<td>Company:</td>, <td> </td>,
<td>Name :</td>, <td> </td>,
<td>Mobile :</td>, <td> </td>
]
我只需要单独提取Name和Mobile(它们在解析树中位于同一级别)。我该怎么做?我已尝试使用soup.find_next_siblings method,但无法以所需格式存储数据(数字和移动设备有两个单独的列表)
答案 0 :(得分:0)
您可以使用以下内容:
from bs4 import BeautifulSoup
html = """
<td>Name :</td>, <td>xyz</td>,
<td>Mobile :</td>, <td>180-14587962</td>,
<td>Company:</td>, <td>abc Comp</td>,
<td>Name :</td>, <td> </td>,
<td>Mobile :</td>, <td> </td>,
<td>Company:</td>, <td> </td>,
<td>Name :</td>, <td> </td>,
<td>Mobile :</td>, <td> </td>
"""
soup = BeautifulSoup(html, "lxml")
x = soup.find_all("td")
print x[1]
print x[3]
<强>标准输出强>
<td>xyz</td>
<td>180-14587962</td>
<强>样本强>
答案 1 :(得分:0)
这就是我解决它的方式
for tag in soup.findAll('td'):
if tag.text.strip("\n").strip(' ').strip("\n")== 'Name :':
inter=tag.find_next_sibling()
list_name.append(inter.text.strip("\n").strip(' ').strip("\n"))
if tag.text.strip("\n").strip(' ').strip("\n")== 'Mobile :':
inter=tag.find_next_sibling()
list_mobile.append(inter.text.strip("\n").strip(' ').strip("\n"))
循环浏览所有td标记以查找“名称:”或“移动:”并将下一个标记(包含值)添加到单独的列表中