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

Ich möchte alle Elemente nur wählen wie oben: der Tag TABLE ist, und es gibt mehrere Attribute (cellSpacing=0,cellPadding=0,width=700,border=0).Python, BeautifulSoup4: select Elemente, bei denen mehrere Attribute mehrere Werte entsprechen jeweils

Ich habe versucht, den folgenden Python-Skript:

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) 

führen Sie das Skript ohne Fehler, aber schöne Suppe findet nothing.This muss falsch sein, wenn Sie die Seite (http://news.scu.edu.cn/news2012/cdzx/I0201index_1.htm) mit Chrome öffnen, rechts klicken, gehen inspect-> Netzwerk-> Doc-> Response, Suche <TABLE cellSpacing=0 cellPadding=0 width=700 border=0 617px; HEIGHT: 22px 23px 536px;>, werden Sie 30 passende Ergebnisse finden.

Antwort

0

Der TABLE Tag-Name muss niedriger sein Gefasste:

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

Hier ist ein reference section in the documentation:

Da HTML-Tags und Attribute Groß- und Kleinschreibung sind alle drei HTML-Parser convert-Tag und Attributnamen in Kleinbuchstaben. Das heißt, das Markup <TAG></TAG> wird in <tag></tag> konvertiert.

+0

Danke, das ist richtig, ich habe "TABLE" in "table" geändert, endlich gibt schöne Suppe einige gültige Informationen zurück.Aber es scheint ein anderes Problem zu geben: schöne Suppe gibt nur das erste Element von 30 zurück habe eine Idee was ist das Problem? –

+0

@bowen hast du 'find_all()' anstelle von 'find()' versucht? – alecxe

+0

Hoppla, tut mir leid, ich hätte es googeln können. Sorry Mann, ich muss deine Zeit verschwendet haben. Vielen Dank !!! –

Verwandte Themen