2016-05-12 23 views
1

私は、ログインしてPythonスクリプトを使用して情報を取得するルータを持っています。私はPythonの初心者ですが、もっと学びたいと思っています。私は、スクリプトを最初に実行するときルータアクセス - 美しいスープ - Python 3.5

は、私は、認証エラーが表示されます。

from requests.auth import HTTPBasicAuth 
import requests 
from bs4 import BeautifulSoup 

response = requests.get('http://192.168.1.1/Settings.html/', auth=HTTPBasicAuth('Username', 'Password')) 
html = response.content 

soup = BeautifulSoup(html, "html.parser") 
print (soup.prettify()) 

私は2つの質問があります。ここには、私がこれまでに書かれたものです。 2回目にスクリプトを実行すると、認証されてHTMLを取得するように見えます。より良い方法はありますか?

BSでは、私はスクリプトから必要なコードを取得したいだけです。 BSを掻き集めるようにタグを見ることはできません。 HTMLの開始時にそこに私は、例えばデータをこすりしたいの変数のリストは以下のとおりです。

var Device Pin = '12345678'; 

そのたびに、単一のスクリプトを使用しての代わりに、Webインターフェイスにログオン情報を取得する方がはるかに簡単。これは、スクリプトのtype = "text/javascript"内にあります。

BSはジョブの正しいツールです。変数のリストで1行だけを取り除くことはできますか?

いつものように助けてください。

答えて

0

私が知る限り、BeautifulSoupはjavascriptを処理しません。この場合、それだけで認証の問題に関しては、正規表現

import re 
m = re.search(r"var Device Pin\s+= '(\d+)'", html) 
pin = m.group(1) 

を使用するのに十分に簡単です、あなたはそれが最初に動作しない場合は、コールをやり直すtry exceptであなたの呼び出しをラップすることができます。

0

私はあなたのスクリプトとあなたのルータの間の相互作用を見るために、パケットスニファ、tcpdumpまたはwiresharkを実行したいと思います。インタラクションを表示すると、最初のパスで認証できない理由を特定するのに役立ちます。この問題を回避するには、authセクションをforループで実行します。これは失敗する前にN回認証を試みます。

削り取りに関しては、XPathを使用できるように、美しいスープパーサーでlxmlを検討するとよいでしょう。 can we use xpath with BeautifulSoup?

XPathでは、lxmlが解析することができれば、htmlから単一の値、テキスト、属性などを簡単に取り出すことができます。

関連する問題