Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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靓汤中取出桌上的食物?_Python_Web Scraping_Beautifulsoup - Fatal编程技术网

如何从python靓汤中取出桌上的食物?

如何从python靓汤中取出桌上的食物?,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我试图从“决赛比赛列表”表(第二表)中删除年度和获奖者(第一列和第二列) :我正在使用下面的代码: import urllib2 from BeautifulSoup import BeautifulSoup url = "http://www.samhsa.gov/data/NSDUH/2k10State/NSDUHsae2010/NSDUHsaeAppC2010.htm" soup = BeautifulSoup(urllib2.urlopen(url).read()) soup.find

我试图从“决赛比赛列表”表(第二表)中删除年度和获奖者(第一列和第二列) :我正在使用下面的代码:

import urllib2
from BeautifulSoup import BeautifulSoup

url = "http://www.samhsa.gov/data/NSDUH/2k10State/NSDUHsae2010/NSDUHsaeAppC2010.htm"
soup = BeautifulSoup(urllib2.urlopen(url).read())
soup.findAll('table')[0].tbody.findAll('tr')
for row in soup.findAll('table')[0].tbody.findAll('tr'):
    first_column = row.findAll('th')[0].contents
    third_column = row.findAll('td')[2].contents
    print first_column, third_column
使用上面的代码,我可以很好地获得第一列和第三列。但是当我使用与
http://en.wikipedia.org/wiki/List_of_FIFA_World_Cup_finals
,它找不到作为其元件的tbody,但我在检查元件时可以看到tbody

url = "http://en.wikipedia.org/wiki/List_of_FIFA_World_Cup_finals"
soup = BeautifulSoup(urllib2.urlopen(url).read())

print soup.findAll('table')[2]

    soup.findAll('table')[2].tbody.findAll('tr')
    for row in soup.findAll('table')[0].tbody.findAll('tr'):
        first_column = row.findAll('th')[0].contents
        third_column = row.findAll('td')[2].contents
        print first_column, third_column
以下是我从评论错误中得到的信息:

'
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-150-fedd08c6da16> in <module>()
      7 # print soup.findAll('table')[2]
      8 
----> 9 soup.findAll('table')[2].tbody.findAll('tr')
     10 for row in soup.findAll('table')[0].tbody.findAll('tr'):
     11     first_column = row.findAll('th')[0].contents

AttributeError: 'NoneType' object has no attribute 'findAll'

'
'
---------------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
在()
7#打印汤。findAll(“表格”)[2]
8.
---->9.soup.findAll('table')[2].tbody.findAll('tr'))
10表示soup.findAll('table')[0].tbody.findAll('tr')中的行:
11第一列=行.findAll('th')[0]。内容
AttributeError:“非类型”对象没有属性“findAll”
'

如果您通过浏览器中的inspect工具进行检查,它将插入
t车身
标签

源代码可能包含它们,也可能不包含它们。如果您真的想知道,我建议您查看源代码视图

无论哪种方式,都不需要遍历到tbody,只需:

soup.findAll('table')[0]。findAll('tr')
应该可以工作

url = "http://en.wikipedia.org/wiki/List_of_FIFA_World_Cup_finals"
soup = BeautifulSoup(urllib2.urlopen(url).read())
for tr in soup.findAll('table')[2].findAll('tr'):
    #get data

然后在表中搜索所需内容:)

直接运行以下代码

tr_elements=soup.find_all('table')[2]。find_all('tr')

这样,您就可以访问所有的
;为此,必须使用for循环(也有其他可能的迭代方法)。不要试图找到tbody,默认情况下会添加它

注意:

如果在获取所需标记时遇到问题,请使用
.decompose()
方法分解前面的标记