2017-09-26 3 views
0

Mein Ziel ist es, Anzahl der spezifischen Tags von Links zu bekommen, was ich kratzen möchte. Ich habe die Anzahl der Tags manuell überprüft und mein Code kann nicht alle finden.BeautifulSoup kann nicht alle Tags finden

Ich habe verschiedene Parser wie "html.parser", "html5lib" und "lxml" ausprobiert, aber der Fehler tritt jedes Mal auf.

Mein Code:

from bs4 import BeautifulSoup 
from selenium import webdriver 
urls = ["http://www.basket.fi/sarjat/ottelu/?game_id=3502579&season_id=93783&league_id=4#mbt:2-400$t&0=1", 
"http://www.basket.fi/sarjat/ottelu/?game_id=3502523&season_id=93783&league_id=4#mbt:2-400$t&0=1", 
"http://www.basket.fi/sarjat/ottelu/?game_id=3502491&season_id=93783&league_id=4#mbt:2-400$t&0=1", 
"http://www.basket.fi/sarjat/ottelu/?game_id=3502451&season_id=93783&league_id=4#mbt:2-400$t&0=1", 
"http://www.basket.fi/sarjat/ottelu/?game_id=3502395&season_id=93783&league_id=4#mbt:2-400$t&0=1", 
"http://www.basket.fi/sarjat/ottelu/?game_id=3502407&season_id=93783&league_id=4#mbt:2-400$t&0=1"] 

for url in urls: 
    browser = webdriver.PhantomJS() 
    browser.get(url) 
    table = BeautifulSoup(browser.page_source, 'lxml') 
    print(len(table.find_all("tr", {"class":["row1","row2"]}))) 

Ausgang:

88 
87 
86 
66 
86 
59 

Tor Ausgabe:

88 
86 
87 
87 
86 
83 
+0

Können Sie uns sagen, was genau wollen Sie kratzen? – mostaszewski

Antwort

1

ich im Grunde nur eine Verzögerungsleitung, um Ihren Code hinzugefügt. Dies hilft dem Programm zu warten, bis die Webseite vollständig geladen und bereit zum Parsen mit BS4 ist.

Beachten Sie auch, dass meine Ausgabe anders als Ihre Zielausgabe ist. Aber ich habe die Anzahl von "tr", die "row1" und "row2" enthält, auf jeder URL geprüft und es scheint, dass meine Ausgabe korrekt ist (vielleicht haben sich die Ergebnisse auf der Website ein wenig nach der Zeit geändert, als du die Frage gepostet hast).

Code:

import time 
from bs4 import BeautifulSoup 
from selenium import webdriver 

urls = ["http://www.basket.fi/sarjat/ottelu/?game_id=3502579&season_id=93783&league_id=4#mbt:2-400$t&0=1", 
"http://www.basket.fi/sarjat/ottelu/?game_id=3502523&season_id=93783&league_id=4#mbt:2-400$t&0=1", 
"http://www.basket.fi/sarjat/ottelu/?game_id=3502491&season_id=93783&league_id=4#mbt:2-400$t&0=1", 
"http://www.basket.fi/sarjat/ottelu/?game_id=3502451&season_id=93783&league_id=4#mbt:2-400$t&0=1", 
"http://www.basket.fi/sarjat/ottelu/?game_id=3502395&season_id=93783&league_id=4#mbt:2-400$t&0=1", 
"http://www.basket.fi/sarjat/ottelu/?game_id=3502407&season_id=93783&league_id=4#mbt:2-400$t&0=1"] 

for url in urls: 
    driver = webdriver.Chrome() 
    driver.get(url) 
    time.sleep(10) 
    table = BeautifulSoup(driver.page_source, 'lxml') 
    print(len(table.find_all("tr", {"class":["row1","row2"]}))) 

Ausgang:

88 
87 
86 
87 
86 
83 
Verwandte Themen