【发布时间】:2018-03-18 01:35:49
【问题描述】:
我有一个包含一个或多个表单的网页。我想做的是:
- 识别表格
- 发送发布请求并捕获响应。
我已经完成了第 1 点,我正在使用 requests.get 和 Beautifulsoup 来识别网页中的表单。 我的问题是,如何在不提交表单的情况下获取表单 url?
示例:我将在 https://stackoverflow.com/ 上搜索“测试”
网址如下所示:https://stackoverflow.com/search?q=test
我有兴趣获得这部分:/search?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 查询。
标签: python beautifulsoup python-requests