Webサイトで検索する必要がある
url = r'http://www.cpso.on.ca/docsearch/'
これはaspxページです(昨日からこのトレッキングを開始しています。初心者の質問で申し訳ありません)
BeautifulSoup を使用すると、__VIEWSTATE と __EVENTVALIDATION を次のように取得できます。
viewstate = soup.find('input', {'id' : '__VIEWSTATE'})['value']
eventval = soup.find('input', {'id' : '__EVENTVALIDATION'})['value']
ヘッダーは次のように設定できます。
headers = {'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13',
'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml; q=0.9,*/*; q=0.8',
'Content-Type': 'application/x-www-form-urlencoded'}
Webページにアクセスすると、本当に渡したい値は姓と名だけです...
LN = "smith"
FN = "a"
data = {"__VIEWSTATE":viewstate,"__EVENTVALIDATION":ev,
"ctl00$ContentPlaceHolder1$MainContentControl1$ctl00$txtLastName":LN,
"ctl00$ContentPlaceHolder1$MainContentControl1$ctl00$txtFirstName":FN}
すべてをまとめると、次のようになります。
import urllib
import urllib2
import urlparse
import BeautifulSoup
url = r'http://www.cpso.on.ca/docsearch/'
html = urllib2.urlopen(url).read()
soup = BeautifulSoup.BeautifulSoup(html)
viewstate = soup.find('input', {'id' : '__VIEWSTATE'})['value']
ev = soup.find('input', {'id' : '__EVENTVALIDATION'})['value']
headers = {'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13',
'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml; q=0.9,*/*; q=0.8',
'Content-Type': 'application/x-www-form-urlencoded'}
LN = "smith"
FN = "a"
data = {"__VIEWSTATE":viewstate,"__EVENTVALIDATION":ev,
"ctl00$ContentPlaceHolder1$MainContentControl1$ctl00$txtLastName":LN,
"ctl00$ContentPlaceHolder1$MainContentControl1$ctl00$txtFirstName":FN}
data = urllib.urlencode(data)
request = urllib2.Request(url,data,headers)
response = urllib2.urlopen(request)
newsoup = BeautifulSoup.BeautifulSoup(response)
for i in newsoup:
print i
問題は、実際には結果が得られないように見えることです...フォーム内のすべてのテキストボックスにすべての値を提供する必要があるかどうか、または何を提供する必要があるかわかりません...多分私はそれを適切に行っていません. とにかく、誰かが私を正してくれることを願っています。私はそれを持っていると思っていましたが、医師のリストと連絡先情報が表示されることを期待していました.
以前にbeautifulsoupを使用したことがありますが、私の問題はリクエストを送信し、データ部分に適切な量の情報を持っているだけだと思います。
ありがとう!