我試圖在使用以下代碼發佈數據到窗體上後廢棄一個網頁。POST_DATA後沒有報廢響應頁面 - 美麗的湯姆和Python
import bs4 as bs
import urllib.request
import requests
import webbrowser
import urllib.parse
url_for_parse = "http://demo.testfire.net/feedback.aspx"
#PARSE THE WEBPAGE
sauce = urllib.request.urlopen(url_for_parse).read()
soup = bs.BeautifulSoup(sauce,"html.parser")
#GET FORM ATTRIBUTES
form = soup.find('form')
action_value = form.get('action')
method_value = form.get('method')
id_value = form.get('id')
#POST DATA
payload = {'txtSearch':'HELLOWORLD'}
r = requests.post(url_for_parse, payload)
#PARSING ACTION VALUE WITH URL
url2 = urllib.parse.urljoin(url_for_parse,action_value)
#READ RESPONSE
response = urllib.request.urlopen(url2)
page_source = response.read()
with open("results.html", "w") as f:
f.write(str(page_source))
searchfile = open("results.html", "r")
for line in searchfile:
if "HELLOWORLD" in line:
print ("STRING FOUND")
else:
print ("STRING NOT FOUND")
searchfile.close()
代碼是正確的。該響應網頁已成功報廢並存儲在results.html中。
但是,我想在post_data執行後取消網頁。因爲每次運行代碼,我都會得到結果:未找到字符串。這意味着在執行post_data之前抓取生成的頁面。
如何修改代碼,例如表單已成功提交,然後源代碼存儲在本地文件中。
對於上述過程,建議替代框架而不是美麗腳本嗎?
我之前已經試過r.content上面的代碼。所述r.content片段去如下: #POST DATA 有效載荷= { 'txtSearch': 'HELLOWORLD'} R = requests.post(url_for_parse,有效載荷) 張開( 「results.html」, 「W」 )作爲f: f.write(str(r.content)) 但是,找不到相同的字符串結果是輸出。 –
也許這將有助於通過您發佈的頁面進行視覺分析。當我嘗試POST到頁面時,它告訴我我沒有通過身份驗證。你有嗎? – panatale1