2017-12-18 251 views
-1
<TABLE cellSpacing=0 cellPadding=0 width=700 border=0 617px; HEIGHT: 22px 23px 536px;> 
    ... 
</TABLE> 

我想选择的所有元素就像以上:所述标签是TABLE,并且有几个属性(cellSpacing=0,cellPadding=0,width=700,border=0)。的Python,BeautifulSoup4:其中多个属性等于多个值中选择的元素分别

我尝试以下Python脚本:

import requests 
from bs4 import BeautifulSoup 
result=requests.get("http://news.scu.edu.cn/news2012/cdzx/I0201index_1.htm") 
result.encoding="GBK" 
soup=BeautifulSoup(result.text,"html.parser") 
soup=soup.find("TABLE",attrs={"cellspacing":"0","cellpadding": "0","width": 
"700","border":"0"}) 
print(soup) 

没有错误的脚本运行,但美丽的汤发现nothing.This一定是错误的,如果你打开的网页(http://news.scu.edu.cn/news2012/cdzx/I0201index_1.htm)与浏览器,点击右键,去检查 - >网络 - >文档 - >响应,搜索<TABLE cellSpacing=0 cellPadding=0 width=700 border=0 617px; HEIGHT: 22px 23px 536px;>,您会发现30条匹配结果。

回答

0

TABLE标签名称必须的是小写字母:

soup = soup.find("table", ...) 

这里是一个reference section in the documentation

由于HTML标记和属性是不区分大小写,所有三个HTML解析器转换标签并将名称归为小写字母。也就是说,标记<TAG></TAG>转换为<tag></tag>

+0

谢谢,男人!没错,我把“TABLE”换成了“table”,最后美丽的汤回复了一些有效的信息。但似乎还有另一个问题:美丽的汤只返回30的第一个元素,你有什么想法是什么问题? –

+0

@bowen你试过'find_all()'而不是'find()'吗? – alecxe

+0

哎呀,对不起,我可以用google搜索它。耐心的人,我一定是浪费了你的时间。非常感谢! –