python - 使用 python 抓取 AJIAX 页面:如何复制 POST 请求
问题描述
我是网络抓取的新手,想 通过复制 AJIAX 请求来抓取此表单的结果。如何通过下面的表单数据发出请求?
GOTOSTEP: 2
LANG: it
flag_ar:
trta: ISCPOZ
datea: 12/02/2019
res:
paxan: 1
paxbn: 0
paxin: 0
ad: 0
veicolo:
rimorchio:
exl:
exa:
bic: 0
bag1: 0
bag2: 0
bag3: 0
dnr: 0
trtr:
dater:
rres:
rpaxan:
pol_insurance:
Q1: 000004
Q2: 000001
Q3: GESTOUR - CALL CENTER
Q9: 0
JSON_AGE_DATA: {"STATUS":"OK","STATUS_MSG":"","Q1":"000004","Q2":"000001","Q3":"GESTOUR - CALL CENTER","ALT_CODE":0}
JSON_AGE_LISTS: {"MINICR":"MINICR","ST01AS":"ST01AS","ST01BS":"ST01BS","ST02AS":"ST02AS","ST02BS":"ST02BS","ST04BS":"ST04BS","ST05BS":"ST05BS","ST11AS":"ST11AS","ST11BS":"ST11BS","STAS":"STAS"}
B2C_ALT_CODE: 0
LOCK:
解决方案
该requests
库有一个post()
函数,可以让您将其data
作为 Python 字典传递。这可以按如下方式完成:
from bs4 import BeautifulSoup
import requests
data = {
"GOTOSTEP" : 2,
"LANG" : "it",
"flag_ar" : "",
"trta" : "ISCPOZ",
"datea": "12/02/2019",
"res" : "",
"paxan" : 1,
"paxbn" : 0,
"paxin" : 0,
"ad" : 0,
"veicolo" : "",
"rimorchio" : "",
"exl" : "",
"exa" : "",
"bic" : 0,
"bag1" : 0,
"bag2" : 0,
"bag3" : 0,
"dnr" : 0,
"trtr" : "",
"dater" : "",
"rres" : "",
"rpaxan" : "",
"pol_insurance" : "",
"Q1" : "000004",
"Q2" : "000001",
"Q3" : "GESTOUR - CALL CENTER",
"Q9" : "0",
"JSON_AGE_DATA" : '{"STATUS":"OK","STATUS_MSG":"","Q1":"000004","Q2":"000001","Q3":"GESTOUR - CALL CENTER","ALT_CODE":0}',
"JSON_AGE_LISTS" : '{"MINICR":"MINICR","ST01AS":"ST01AS","ST01BS":"ST01BS","ST02AS":"ST02AS","ST02BS":"ST02BS","ST04BS":"ST04BS","ST05BS":"ST05BS","ST11AS":"ST11AS","ST11BS":"ST11BS","STAS":"STAS"}',
"B2C_ALT_CODE" : 0,
"LOCK" : "",
}
r = requests.post("http://gestour.nefesy.com/b2c/b2c_maker.php", data=data)
soup = BeautifulSoup(r.content, "html.parser")
for ul in soup.find_all('ul'):
print([li.text for li in ul.find_all('li')])
然后可以使用BeautifulSoup
. 在这种情况下,它以列表的形式返回一个数据<ul><li>
表,为您提供:
['', '12/02/2019', '16:05', '1:00', 'DON PEPPINO\xa0', 'BASSISSIMA STAGIONE Ordinario', '13,70 €']
['', '12/02/2019', '19:10', '1:00', 'DON PEPPINO\xa0', 'BASSISSIMA STAGIONE Ordinario', '13,70 €']
推荐阅读
- python - 如何从 Python 中的字典中获取每个 URL?
- node.js - 一次只处理 500 行/行 createReadStream
- java - 在 Spring Boot 框架中使用 Apache Camel 的 ActiveMQ 生产者的性能设置
- java - 无法在数组中获得两个相等数字的两个位置
- javascript - 当作为参数传递给其他函数并在其中调用时,console.log 不是函数
- sass - 将自动前缀添加到 PhpStorm
- javascript - 如何从 npm 包中导入类
- java - 在 lambda 中使用 Executors.callable()
- javascript - 在 Tabulator.js 中使用 formatter:"rowSelection" 时如何删除、隐藏一个复选框?
- javascript - mysql模块中的sqlMessage比较错误无法正常工作