Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用th文本导航表_Python_Beautifulsoup - Fatal编程技术网

Python 使用th文本导航表

Python 使用th文本导航表,python,beautifulsoup,Python,Beautifulsoup,我有下表: <table class="information"> <tr> .... lots of rows with <th> and <td></tr> <tr> <th>Nationality</th> <td><a href="..">Stackoverflowian</a></td> </tr> <

我有下表:

<table class="information">
  <tr> .... lots of rows with <th> and <td></tr>
  <tr>
   <th>Nationality</th>
   <td><a href="..">Stackoverflowian</a></td>
  </tr>
</table>

.... 有很多行和
国籍
我想在td标签内找到th下带有“国籍”的文本。我应该如何导航到那里?我正在使用Beautifulsoup和Python


补充说,上面有很多th和td标记,为了强调仅找到第一个th是不够的,请找到
th标记,然后获取其:


我们需要执行两次下一个同级,因为第一个同级将给出换行符。

找到
th
标记,然后获取其:


我们需要做两次下一个同级,因为第一个会给出换行符。

我修改了这个答案,因为你给出了一个你试图解析的特定HTML页面

r = requests.get("http://https://en.wikipedia.org/wiki/Usain_Bolt")
# test that we loaded the page successfully!
soup = BeautifulSoup(r.text, "html.parser")

thTag = soup.find('th', text='Nationality'):
tdTag = thTag.next_sibling.next_sibling

print(tdTag.text)
>>>'Jamaican'

我已经修改了这个答案,因为您给出了一个试图解析的特定HTML页面

r = requests.get("http://https://en.wikipedia.org/wiki/Usain_Bolt")
# test that we loaded the page successfully!
soup = BeautifulSoup(r.text, "html.parser")

thTag = soup.find('th', text='Nationality'):
tdTag = thTag.next_sibling.next_sibling

print(tdTag.text)
>>>'Jamaican'

如果你在寻找它自己,那么考虑<代码> Ford-PARTRONE()/<代码>

< P>如果你在查看它自己,那么考虑<代码> Fund PARTRONE()/<代码>

你应该在把它作为一个解决方案发布之前测试你的答案。虽然您的方法是正确的,但是发布错误的代码只会混淆OP和未来的访问者。这与以下代码不起作用:对于soup中的元素(text='national'):print(element.next_sibling())TypeError:“NoneType”对象不可调用定义soup时,需要为其提供实际的HTML代码进行解析。在上面的示例中,您为它提供了整个请求对象r。只要传递r.text就行了。正如你给出了一个你试图扫描的页面的特定HTML示例,我可以给你一个具体的答案。我已经修改了我以前的答案。你应该先测试一下你的答案,然后再将其作为解决方案发布。虽然您的方法是正确的,但是发布错误的代码只会混淆OP和未来的访问者。这与以下代码不起作用:对于soup中的元素(text='national'):print(element.next_sibling())TypeError:“NoneType”对象不可调用定义soup时,需要为其提供实际的HTML代码进行解析。在上面的示例中,您为它提供了整个请求对象r。只要传递r.text就行了。正如你给出了一个你试图扫描的页面的特定HTML示例,我可以给你一个具体的答案。我已经回答了我之前的问题。如果我想要的表头不是html中的第一个表头,这不是失败了吗?@bjornasm。如果您有多个

th
标记,那么您可以找到它们并遍历它们。我将编辑我的回答如果我想要的表格标题不是html中的第一个表格标题,这不会失败吗?@bjornasm。如果您有多个
th
标记,那么您可以找到它们并遍历它们。我将编辑我的答案