from requests_html import HTMLSession from pyquery import PyQuery as pq import sys import os inet_id=os.environ['inet_id'] useragent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62' header={ 'User_Agent':useragent, } # クローリング url='https://www.ipat.jra.go.jp/' session=HTMLSession() response=session.get(url,headers=header) response.encoding=response.apparent_encoding # 日本語の文字化けを防ぐ response.html.render() # ブラウザエンジンでHTML(ブラウザのhtml)を生成 # with open('loginsite.html','w',encoding='SHIFT-JIS') as f: # f.write(response.text) # デバック用ファイル # スクレイピング html=pq(response.text) html.make_links_absolute(response.url) # クッキーとトークンを取得 uthenticity1='07CQN1' uthenticity2='010' # uthenticity1=html('input[name="uh"]').attr('value') # 返り値:None # uthenticity2=html('input[name="g"]').attr('value') # 返り値:None cookie=response.cookies login_info={ 'inetid':inet_id, 'uh':uthenticity1, 'g':uthenticity2, } res=session.post(url,data=login_info,cookies=cookie) print(res.url) # 返り値は'https://www.ipat.jra.go.jp/' で最初のurlと同じ
requestsでログインしてその先のページのurlを取得したいです。ですが、responseで得られたソースコードとブラウザで表示されているソースコードが異なり、そのうえformatタグの部分が欠落しているのでログイン情報をpostできず?にいます(ついでにtokenも取得できないので直接値をうちこんでいます、uthenticity1、uthenticity2のところです)。とりあえず取得するコードとブラウザのコードを同じにするためにユーザーエージェントを引数にする、またrequestsモジュールではなくrequests-htmlモジュールを使用することを試みたのですが結果は変わりませんでした。
助言をお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/05 06:52
2022/01/05 07:53