我正在尝试获取网站搜索结果的输出,我正在使用请求发布方法来做到这一点。在下面,您可以从网址中看到FORM和INPUT html。我需要在表单输入中获取每个搜索结果。
我尝试了 下面的代码,但未返回任何内容
import requests
from bs4 import BeautifulSoup
# FORM from website
# <form name="form1" method="post" action="payerOrVoenChecker.jsp">
# INPUT from the website
# <input type="text" name="voen" size="38" style="BACKGROUND-COLOR: #ffffff; BORDER-BOTTOM-STYLE: groove;
# BORDER-LEFT-STYLE: groove; BORDER-RIGHT-STYLE: groove; BORDER-TOP-STYLE: groove; COLOR: #000000; FONT-FAMILY:
# Tahoma, Arial; FONT-SIZE: 12px" value="">
request_headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-US,en;q=0.9',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Content-Type': 'application/x-www-form-urlencoded',
'Host': 'www.e-taxes.gov.az',
'Origin': 'https://www.e-taxes.gov.az',
'Referer': 'https://www.e-taxes.gov.az/ebyn/payerOrVoenChecker.jsp',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-User': '?1',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'YOUR USER AGENT',
}
voens = {2000460031,
1000877741,
1000877741,
1500403661,
1000877741,
3000489411,
1000877741,
1802142932,
}
tip = ['L',
'P',
]
form_data = {
'tip': tip,
'voenOrName': 'V',
'voen': voens,
'name': '',
'submit': ' Yoxla ',
}
url = 'https://www.e-taxes.gov.az/ebyn/payerOrVoenChecker.jsp'
for voen in voens:
form_data['voen'] = voen
form_data['tip'] = tip
response = requests.post(url, data=form_data, headers=request_headers)
s = BeautifulSoup(response.content, 'lxml')
sContent = s.findAll('table', {'class': 'com'})[0].findAll('tr', recursive=False)[1]
outcome = sContent.get_text().strip()
# .find("tr", recursive=False)
print(outcome)
预期结果将以表格形式出现,我在网站上添加搜索前后的屏幕截图, 突出显示的是我需要获取的表格 < / p>
答案 0 :(得分:1)
您错过了POST
请求正文中要发送的其他项目。
尝试一下:
request_headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-US,en;q=0.9',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Content-Type': 'application/x-www-form-urlencoded',
'Host': 'www.e-taxes.gov.az',
'Origin': 'https://www.e-taxes.gov.az',
'Referer': 'https://www.e-taxes.gov.az/ebyn/payerOrVoenChecker.jsp',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-User': '?1',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'YOUR USER AGENT',
}
form_data = {
'tip': 'L',
'voenOrName': 'V',
'voen': '1700393071',
'name': '',
'submit': ' Yoxla ',
}
response = requests.post(url, data=form_data, headers=request_headers)
找出这些问题的最佳方法是在浏览器中的开发人员工具中切换到“网络”选项卡。 Chrome和Firefox中的快捷键均为F12。
它将向您显示浏览器在后台发送的所有请求的列表。点击与您的网址匹配的网址。
将在右侧打开一个窗格,该窗格显示使用了哪种方法(GET / POST),在请求中传递了哪些标头,发送了哪些数据(在POST的情况下)等等。
我所做的就是粘贴请求标头和该选项卡中的表单数据。