- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试抓取此网站:https://case.occ.ok.gov/ords/f?p=1004:203
拼图中缺少的部分是弄清楚如何在发出最终请求之前“获取”数据负载中的 p_request
参数。查看“主”页面时,此字段显示为空,因此无法使用它传递到我的 POST 请求。
下面的代码不起作用,因为我的有效负载中有一个空白的 p_request
参数,尽管我通过开发者控制台测试知道,如果我能够获取 ,它就会起作用p_request
字段。
# Query Main Site to Build Payload
url = 'https://case.occ.ok.gov/ords/f?p=1004:203'
r = requests.get(url)
soup = BeautifulSoup(r.text,'lxml')
# Get Cookie
cookies = {}
cookdat = r.cookies
cookies['ORA_WWV_APP_1004'] = cookdat.get('ORA_WWV_APP_1004')
cookies['X-Oracle-BMC-LBS-Route'] = cookdat.get('X-Oracle-BMC-LBS-Route')
# Create Payload
inputs = soup.select('input')
d_inputs = {i['id']:i.get('value','') for i in inputs}
data = [
('p_flow_id', '1004'),
('p_flow_step_id', '203'),
('p_instance', '%s'%d_inputs['pInstance']),
('p_debug', ''),
('p_request', ''),
('p_widget_name', 'worksheet'),
('p_widget_mod', 'PULL'),
('p_widget_action', ''),
('p_widget_num_return', '100000'),
('x01', '8980043036046866'),
('x02', '8985720770049096'),
('f01', 'R8980010866046866_column_search_current_column'),
('f01', 'R8980010866046866_search_field'),
('f01', 'R8980010866046866_row_select'),
('f02', ''),
('f02', ''),
('f02', '50'),
('p_json', '{"pageItems":{"itemsToSubmit":[{"n":"P203_LASTNAME","v":"%s"},{"n":"P203_FIRSTNAME","v":""},{"n":"P203_SEARCH_CRITERIA","v":"1"}],"protected":"%s","rowVersion":"","formRegionChecksums":[]},"salt":"%s"}'%(letter,d_inputs['pPageItemsProtected'],d_inputs['pSalt'])),
]
# POST request retrieve data
r = requests.post('https://case.occ.ok.gov/ords/wwv_flow.ajax', cookies=cookies, data=data)
print(r.text)
在开发者控制台中,我在进行我想要的提交类型时看到此字段出现,即使它在主页中为空白:
如何“检索”此字段,该字段是请求正常工作所必需的?
最佳答案
这对我有用
import requests
import json
from bs4 import BeautifulSoup
# globals
users = []
letter = "A"
# session
session = requests.Session()
# get page
auth = session.get('https://case.occ.ok.gov/ords/f?p=1004:203')
soup = BeautifulSoup(auth.text, 'html.parser')
inputs = soup.select('input')
d_inputs = {i['id']: i.get('value', '') for i in inputs}
# create params
params = {
'p_flow_id': d_inputs['pFlowId'],
'p_flow_step_id': d_inputs['pFlowStepId'],
'p_instance': d_inputs['pInstance'],
'p_debug': '',
'p_request': 'Search',
'p_reload_on_submit': d_inputs['pReloadOnSubmit'],
'p_page_submission_id': d_inputs['pPageSubmissionId'],
'p_json': json.dumps({"pageItems": {
"itemsToSubmit": [
{"n": "P203_LASTNAME", "v": "{}".format(letter)},
{"n": "P203_FIRSTNAME", "v": ""},
{"n": "P203_SEARCH_CRITERIA", "v": "1"}
],
"protected": d_inputs['pPageItemsProtected'],
"rowVersion": "",
"formRegionChecksums": []
},
"salt": d_inputs['pSalt']
})
}
# Send request to APEX
session.post(
'https://case.occ.ok.gov/ords/wwv_flow.accept', data=params
)
# get page with data (first)
data_page = session.get(
'https://case.occ.ok.gov/ords/f?p=1004:203:{}::NO:::'.format(
d_inputs['pInstance']
)
)
table_soup = BeautifulSoup(data_page.text, 'html.parser')
# new params
inputs = table_soup.select('input')
d_inputs = {i['id']: i.get('value', '') for i in inputs}
json_ajax_data = json.loads(data_page.text.split(
'interactiveReport('
)[1].split(');})();')[0])
# get data for next pages
params_news = {
'p_flow_id': params['p_flow_id'],
'p_flow_step_id': params['p_flow_step_id'],
'p_instance': params['p_instance'],
'p_debug': '',
'p_request': 'PLUGIN={}'.format(json_ajax_data['ajaxIdentifier']),
'p_widget_name': 'worksheet',
'p_widget_mod': 'ACTION',
'p_widget_action': 'PAGE',
'p_widget_action_mod': 'pgR_min_row=51max_rows=50rows_fetched=50',
'p_widget_num_return': 50,
'x01': d_inputs['R8980010866046866_worksheet_id'],
'x02': d_inputs['R8980010866046866_worksheet_id'],
'p_json': params['p_json']
}
# get next page data
next_page = session.post(
'https://case.occ.ok.gov/ords/wwv_flow.ajax', data=params_news
)
next_page_soup = BeautifulSoup(next_page.text, 'html.parser')
next_page_table_with_data = table_soup.find('table', {'class': 'a-IRR-table'})
next_page_rows = next_page_table_with_data.find_all('tr')
# parse rows
for row_next_page in next_page_rows:
cells_next_page = row_next_page.find_all('td')
if len(cells_next_page) > 0:
users.append(
{
'name': cells_next_page[0].text, 'surname': cells_next_page[1].text
}
)
print(users)
[
{'name': 'ANDERSON', 'surname': 'MICHAEL L AND KAREN'},
{'name': 'ALVAREZ', 'surname': 'PETRA'},
...
]
关于Python 请求 : How to get value of Blank Hidden Input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68322689/
我正在尝试使用此页面了解人工神经网络(它正在处理中,但我在更改一些小部分的同时将其转换为 C++):http://natureofcode.com/book/chapter-10-neural-net
我对此重定向有疑问。我试过使用 RewriteRule 和 RewriteCond 的 .htaccess 方法,以及 VirtualDirectory 方法。这是我为 VirtualHost 所做的
如果单元格 A1 为空白并且同一行中的任何单元格不为空白,我需要突出显示它。该行中的大多数单元格中都会包含公式。 最佳答案 创建一个新的条件格式,并使用这个公式: =AND($A$1="",COUNT
我在 Excel 中有这样一个公式: =IF(A1="foo";"";"0") 如果公式返回空白值,我不希望 POI 创建的结果 csv 文件中有任何值。如果公式返回 0,我希望在我的 csv 文件中
我正在尝试做类似this的操作,但是对于引用的电子邮件,所以这 On 2014-07-11 at 03:36 PM, wrote:
我正在使用 django-rest-framework 创建 Django 应用程序并使用 djongo 连接到 MongoDB。我有这样的嵌套模型: class Group(models.Model
我想在 VBA 中控制切片器,并想检查是否选择了空值,使用: If slicerCache.SlicerItems.Item("(blank)").selected = True 空值会自动获得标签(
这里是示例代码: var xwin = window.frames[0]; console.log(xwin.location); 即使链接“http://www.w3schools.com/j
如果表单中有空白,则会弹出警报。Javascript 中的错误检查正在工作, 但关闭警报后,表单中的文本将为空白。 我希望我填写的文本在警报关闭后仍保留。 因为我想填补警报后唯一的空白。 你能让我知道
我的 chrome 扩展内容脚本中有以下代码: window.open(chrome.extension.getURL("options.html"),'_blank'); 但是每当我尝试这个时,我只
在表单中,我有许多文本框。 我想要其中一个文本框作为可选。也就是说,用户可以填写也可以不填写此文本框。用户在提交时可以将其留空。但如果用户输入任何值,则该值必须是 url。 我正在使用以下代码。 @U
如何让下面的代码不捕获元素 具有属性 target="blank" ?因为location.href = link.href;在同一张卡片中打开(只有带有 target="blank" 的链接应该在没
截图: (来源:freenetph.yn.lt) 我在第 3 方网站上找到了这个随机链接代码(我忘记了名字),它看起来对我很有帮助,但我的问题是,我希望所有这些链接在单击时都会在新选项卡中打开。任何人
我只是在安装 laravel 时运行以下命令来设置路径 source ~/.bashrc 执行此命令后,ubuntu 终端上不会显示任何内容。只是光标在闪烁。 该怎么办? 最佳答案 ~/.bashrc
如何使用“空白”值更新列值(varchar(20), not null)? 最佳答案 如果要使用NULL更新它,则需要对其进行更改以允许NULL。否则,使用空字符串""更新。 关于sql - 如何使用
我目前正在使用 Excel VBA 中的数组处理大量数据。到目前为止,包含空白单元格的源数据已被视为零,但现在我必须尝试区分空白单元格和其中包含零的单元格。 是否可以使数组输出为零而不是零?这样……
我试过了 let url = URL(string: "http://about:blank") 和 let url = URL(string: "about:blank") Butt
在我将 LinkedIn 公司页面关注按钮添加到我们的网站后,单击该按钮会导致一个 about:blank 页面。显然,在阅读了一些关于同一问题的主题后,公司页面确实得到了关注。然而,被重定向到一些空
从 Firebug JavaScript 控制台是否可以访问 的内容对象 src属性设置为about:blank ?我尝试过: var b=document.getElementById("ifra
我是python新手,此代码旨在打印出MusicTaste.csv文件中的前100个常用单词并将其打印在表格中。我已经解决了过去的语法错误,但之前从未见过此错误。 请参见下面的代码 import re
我是一名优秀的程序员,十分优秀!