2017-09-26 24 views
0

私の目標は、私が掻きたいものからリンクから特定のタグの数を得ることです。タグの数を手作業で調べてみると、すべてのコードを見つけることができません。BeautifulSoupがすべてのタグを見つけられません

「html.parser」、「html5lib」、「lxml」などの異なるパーサーを試しましたが、毎回障害が発生します。

マイコード:

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"]}))) 

出力:

88 
87 
86 
66 
86 
59 

目標出力:

88 
86 
87 
87 
86 
83 
+0

あなたはまさにあなたがこすりしたいです教えてください。 – mostaszewski

答えて

1

私は基本的にはちょうどあなたのコードへの遅延線を追加しました。これは、Webページが完全に読み込まれ、BS4を使って解析できる状態になるまでプログラムが待機するのを助けます。

出力が目標出力と異なることにも注意してください。しかし、私は各URLに "row1"と "row2"を含む "tr"の数を二重にチェックしました。それは私の出力が正確であるようです(おそらく、あなたが質問を投稿した時にウェブサイトの結果がちょっと変わったでしょう)。

コード:

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"]}))) 

出力:

88 
87 
86 
87 
86 
83 
関連する問題