私は1つ以上のフォームを含むウェブページを持っています。私は何をしたいです:投稿なしでフォームURLを取得する - Pythonを使用して
- フォーム
- は、POSTリクエストを送信し特定し、応答をキャッチ。
私はポイント1を超えています。私はrequests.getとBeautifulsoupを使ってWebページからフォームを識別しています。 私の質問は、フォームを提出せずにフォームURLを取得するにはどうすればよいですか?
例:私はhttps://stackoverflow.com/
の "テスト" を検索するURLは次のようになります。https://stackoverflow.com/search?q=test
私はこの部分を得ることに興味がある:?/検索Q他のサイトので、これらのケースではもっと複雑なURLを持っており、私はウェブサイトに依存しないスクレーパーを作りたいと思っています。
私が試した完全なコード:
ここfrom bs4 import BeautifulSoup
import urllib.request
import requests
import mechanicalsoup
#### What?
search_words=['search1','search2']
website='http://www.website.com/'
####
s=requests.Session()
r=s.get(website)
soup_main = BeautifulSoup(r.content,'lxml')
form=soup_main.find('form')
print(form)
param={'searchword':search_words[0]}
method = str(form.get("method"))
print(method)
action =form.get("action")
url = urllib.parse.urljoin(website, action)
print(action)
request1=requests.Request(method,url,params=param)
これは、(相対的な)フォームとURLエンコードされたクエリ(フォームデータ)のアクションです。これは、GETクエリにのみ適用されます。 –