2016-04-24 9 views
0

誰かがWebスクレイプで私を助けることができます願っています。それは昨年の毎日うまく働いた、冬のためにそれをオフにし、ページ上の何かが変更され、もはや働いていない。 リストされている各ステーションの危険度評価コードを抽出する必要があります。昨年、BSは "tr"タグを探していたので、完璧に動作しました。私は困惑している。 http://bcwildfire.ca/hprScripts/DgrCls/index.asp?Region=4Python web scrape failing

ここでBSはそのことをしどこまで私のコードです:

from urllib import urlopen 
from HTMLParser import HTMLParser 
import string, datetime, sys 
from bs4 import BeautifulSoup 

# Fire Danger ratings by station start at index 4 

class HTMLCleaner(HTMLParser): 
    container = "" 
    def handle_data(self, data): 
     self.container = self.container + "," + data 
     return self.container 

todayChk = datetime.date.today().strftime("%d-%b-%Y") 

##FireRegions = {'Prince George': '4', 'Northwest': '3', 'Cariboo': '7', 'Kamloops': '5', 'Southeast': '6'} 
FireRegions = {'Prince George': '4'} 

Regs = FireRegions.keys() 
Reg = 0 

while Reg < len(FireRegions): 
    print Regs[Reg] + " Region" 
    content = urlopen('http://bcwildfire.ca/hprScripts/DgrCls/index.asp?Region='+FireRegions[Regs[Reg]]).read() 
    soup = BeautifulSoup(content, 'html.parser') 
    PGStats = soup.body.find_all("tr") 
    print PGStats 
    Reg+=1 

ありがとうをあなたが解決策を提供することができた場合

は、ここでサンプル領域のためのサイトです。

+1

※「ページ上の何かが変更されました」* - あなたは*何*を見つけようとしましたか? – jonrsharpe

+0

私はFireRegions.keys()のregの行に沿った何かが、whileループの後に 'FireRegions [Regs [Reg]]'よりも綺麗に見えると感じています。 –

+0

私はBSモジュールではあまり良くありません。私は運がないと必要なデータのテーブルに到達するのに何時間も費やしました。ページは昨年とほとんど同じように見えますが、違うものは見えませんでした。 –

答えて

2

この問題は、ページ上に余分なtabletr要素があるために発生します。ステーションと評価が内部にある特定のtableに検索を絞り込む必要があります。

一つの選択肢、我々は他の人から目的のテーブルを区別するために使用することができます何idまたはclass属性が存在しないため、になり、テキストでテーブルヘッダを検索し、go up to the parent table element

table = soup.find(text="[Dgr Rgn] Station").find_parent("table") 
for row in table.find_all("tr")[1:]: 
    cells = row.find_all("td") 
    print(cells[0].get_text(), cells[1].get_text()) 

プリント:

(u'[1] BEAR LAKE', u'3') 
(u'[1] BEDNESTI', u'3') 
(u'[1] CHETWYND (EC)', u'4') 
... 
(u'[1] VALEMOUNT HUB', u'4') 
(u'[1] VANDERHOOF HUB', u'4') 
(u'[1] WONOWON', u'4') 
+0

ああwow alecxe、まさに私が必要とするものです、ありがとう! –