Python,BeautifulSoup4:选择多个属性分别等于多个值的元素

时间:2017-12-18 01:26:59

标签: python python-3.x beautifulsoup html-parsing

<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脚本:

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)

脚本运行没有错误,但美丽的汤什么都没发现。如果你用Chrome打开页面(http://news.scu.edu.cn/news2012/cdzx/I0201index_1.htm),右击,转到inspect-&gt; Network-&gt; Doc-,这一定是错的&gt;回复,搜索<TABLE cellSpacing=0 cellPadding=0 width=700 border=0 617px; HEIGHT: 22px 23px 536px;>,您会找到30个匹配结果。

1 个答案:

答案 0 :(得分:0)

TABLE代码名称必须是低级的:

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

这是reference section in the documentation

  

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