私は、PythonのBeautifulSoupとRequestsを使用してブラジルの最高裁判所からデータを掻き出そうとしています。URLの末尾に3つの乱数を持つサイトを掻き集めるようにしてください。
144個のリンクのそれぞれに、最後に1〜3の数字が付きます(例:http://www.stf.jus.br/portal/remuneracao/listarRemuneracao.asp?periodo=012007&ano=2007&mes=01&folha=3)。
'folha'(シート、ポルトガル語)の部分にパターンはありません。いくつかの月は1、他は2または3です。それはランダムなようです。間違った番号のURLにアクセスすると、サイトは読み込まれますが、ポルトガル語では「A folha solicitanãoéválida」と表示されます(要求されたシートは無効です)。
私のコード(下記)では、「シート」番号のないリンクを含むリストを作成した後、ページを読み込んでそのメッセージがあるかどうかを確認します。そうであれば、tryメソッドを使用して、コードに次の番号(2または3)がURLに付加されます。
しかし、コードは実行されません。 try/exceptをコード内で3つの可能な結果に使用する方法はありますか?
records=[]
for x in links:
r = requests.get(x+'1')
soup = BeautifulSoup(r.text, 'html.parser')
if BeautifulSoup(r.text, 'html.parser') == 'A folha solicitada não é válida':
try:
r = requests.get(x+'2')
soup = BeautifulSoup(r.text, 'html.parser')
if BeautifulSoup(r.text, 'html.parser') == 'A folha solicitada não é válida':
try:
r = requests.get(x+'3')
soup = BeautifulSoup(r.text, 'html.parser')
else:
continue
else:
continue
mes = x[-30:-28]+'/'+x[-28:-24]
ativos = soup.find_all('table', {'id':'ministros_ativos'})
ativos = ativos[0]
for x in range(0,11):
nome = ativos.find_all('a', {'class':'exibirServidor'})[x].text
salarios = ativos.contents[3].findAll('td', {'align':'right'})
salarios_brutos = salarios[::2]
salarios_liquidos = salarios[1::2]
for x in salarios_liquidos:
liquido = x.text
for x in salarios_brutos:
bruto = x.text
records.append((nome, bruto, liquido, mes))
コードが実行されないとはどういう意味ですか? @NickAの入力ミスでエラー –
がありますか?ありがとう、修正済み –
@ whackamadoodle3000はい。この構成では、 'else'ステートメントに問題があります。しかし、それが実行されたとしても、URLを選択する生産的な方法があるかどうかを知ることに興味があります。 –