使用Python刮擦表格数据 - BeautifulSoup

问题描述:

无法弄清楚如何刮取第一个表格数据而不是两者。使用Python刮擦表格数据 - BeautifulSoup

<tr> 
<td>WheelDust 
</td> 
<td>A large puff of barely visible brown dust 
</td></tr> 

我只想WheelDust而是我得到WheelDust和隐约可见的褐色灰尘

import requests 
from bs4 import BeautifulSoup 


r = requests.get("https://wiki.garrysmod.com/page/Effects") 

soup = BeautifulSoup(r.content, "html.parser") 

for td in soup.findAll("table"): 
    #--print(td) 
    for a in td.findAll("tr"): 
     print(a.text) 
+0

如果您不希望在第一次查找后继续迭代,则可以使用soup.find_all的soup.find intsead。当您找到'WheelDust'时,您也可以使用'break'。 – Landmaster

+0

是的,但这是一张桌子,所以我想在第一类中找到所有的东西 –

+0

为什么你在进入tr之后不做a.find('td')? – Landmaster

大粉扑我还是不知道你要问什么,但我相信你说你想访问和唯一的第一个,正确的?如果是这样的话,这是行不通的吗?我会尝试它,但它说我没有访问该网站。

import requests 
from bs4 import BeautifulSoup 


r = requests.get("https://wiki.garrysmod.com/page/Effects") 

soup = BeautifulSoup(r.content, "html.parser") 

for td in soup.findAll("table"): 
    #--print(td) 
    for a in td.findAll("tr"): 
     print(a.find('td')) 
+0

哦,那就是我要找的。我没有看到这样做。谢谢。当我添加文本属性时,它不会将文本返回给我,而是使用标签 –

+0

Yup!这听起来很合理。一旦你解决了你的问题,随意勾选复选标记,以便将问题标记为已完成。 – Landmaster

试试这个。它会给你所有来自该表的数据。

import requests ; from bs4 import BeautifulSoup 

soup = BeautifulSoup(requests.get("https://wiki.garrysmod.com/page/Effects").text, "html.parser") 

table = soup.findAll('table', attrs={'class':'wikitable'})[0] # Changing the index number will give you whichever table you like 
list_of_rows = [[t_data.text for t_data in item.findAll('td')] 
       for item in table.findAll('tr')] 

for data in list_of_rows: 
    print(data)