Web scraping Web抓取:使用cookie发出POST请求

Web scraping Web抓取:使用cookie发出POST请求,web-scraping,python-requests,Web Scraping,Python Requests,我想检索此[预订网站][1]的时间表。在对他们的时间表JSON文件发出POST请求之前,我需要检索/刷新cookie,否则会出现会话ID错误 `sessionID: none` and 'errorCode': '620', 'errorDescription': 'Invalid Session Number' 这是我提出的要求: url = 'https://alilauro-tickets.certusonline.com/php/proxy.php' s = requests.sess

我想检索此
[预订网站][1]
的时间表。在对他们的时间表JSON文件发出POST请求之前,我需要检索/刷新cookie,否则会出现会话ID错误

`sessionID: none` and 'errorCode': '620', 'errorDescription': 'Invalid Session Number'
这是我提出的要求:

url = 'https://alilauro-tickets.certusonline.com/php/proxy.php'
s = requests.session()

#Request the timetable website
s.get('https://alilauro-tickets.certusonline.com/')
s.headers.update({'user-agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.3'})

data = {
    'msg': 'TimeTable',
    'req': '{"getAvailability":"Y","getBasicPrice":"Y","getRouteAnalysis":"Y","directOnly":"Y","legs":1,"pax":1,"origin":"BEV","destination":"FOR","tripRequest":[{"tripfrom":"BEV","tripto":"FOR","tripdate":"2020-03-18","tripleg":0}]}'
}

#Request the JSON with timetable data
r = s.post(url, data=data, timeout=20, cookies=s.cookies)
这是我得到的全部答复:

{'SWS_LoginInfo': {'agencyCode': None, 'userCode': None, 'password': None, 'language': 'EN', 'sessionId': None, 'payByCreditCard': None, 'hasCreditLimit': None, 'creditLimit': None, 'ticketCount': None, 'errorCode': '620', 'errorDescription': 'Invalid Session Number'}, 'SWS_TripInfo': {'getAvailability': None, 'getPrices': None, 'getRouteAnalysis': None, 'getRequiredFields': None}, 'VWS_Trips_Trip': [], 'SWS_Parameters': {'VCompanies_companyDetails': [], 'VPorts_portDetails': [], 'VCountries_countryDetails': [], 'VVessels_vesselDetails': [], 'VPassengerTypes_passengerType': [], 'VPassengerClasses_passengerClass': [], 'VPassengerDiscounts_passengerDiscount': [], 'VVehicleTypes_vehicleType': [], 'VVehicleDiscounts_vehicleDiscount': [], 'VServiceTypes_serviceType': [], 'VServiceDiscounts_serviceDiscount': [], 'VPortCombinations_portCombination': [], 'VDeliveryMethods_deliveryMethod': [], 'VDocumentTypes_documentType': [], 'VLoyaltyCardTypes_loyaltyCardType': []}, 'SWS_PriceTotals': {'totalNetFare': None, 'totalTaxes': None, 'totalVat': None, 'totalPrice': None, 'totalFees': None, 'totalFeesTax': None, 'totalPayable': None}, 'SWS_Reservation': {'salesChannel': None, 'bookingReference': None, 'companyReference': None, 'acceptFees': None, 'reservationStatus': None, 'optionDateTime': None, 'issuePrepaid': None, 'leaderFullName': None, 'leaderEmail': None, 'leaderPhone': None, 'totalNetFare': None, 'totalTaxes': None, 'totalVat': None, 'totalPrice': None, 'totalFees': None, 'totalFeesTax': None, 'totalPayable': None, 'refundAmount': None, 'acceptTerms': None, 'deliveryMethod': None, 'deliveryAmount': None, 'deliveryAddress': None, 'deliveryCountry': None, 'zipCode': None, 'acceptShareData': None, 'settled': None}, 'VWS_CancelledTickets_Ticket': [], 'VWS_Tickets_Ticket': [], 'ScardMember': {'id': None, 'surname': None, 'firstname': None, 'languageId': None, 'language': None, 'gender': None, 'documentTypeId': None, 'documentTypeCode': None, 'documentType': None, 'documentNumber': None, 'nationalityId': None, 'nationality': None, 'dateRegistered': None, 'active': None, 'mobile': None, 'phone': None, 'fax': None, 'email': None, 'address': None, 'zipCode': None, 'countryId': None, 'country': None, 'birthDate': None, 'birthPlace': None, 'VCards_loyaltyCard': []}, 'SloyaltyCard': {'id': None, 'loyaltyCardTypeId': None, 'loyaltyCardTypeCode': None, 'loyaltyCardType': None, 'cardNumber': None, 'active': None, 'points': None, 'dateFrom': None, 'dateTo': None}, 'VcardTransactions_cardTransaction': []}

您只需调用
s.cookies
,即可访问/存储当前会话的cookie


然后您可以在后续请求中使用它

谢谢@isopach。出于某种原因,我得到了cookie,但当我使用它时,我得到了相同的错误。