私はすべての結果をhttps://www.ncl.com/から取得しようとしています。私は、リクエストがGET
であることが判明し、このリンクに送った:https://www.ncl.com/search_vacations これまでのところ、私は最初の12の結果を得て、それを解析しても問題はありません。問題は、結果のページを「変更する」方法を見つけることができないことです。私は499の12を取得し、私はそれらをすべて取得する必要があります。私はこれを行うように試みたhttps://www.ncl.com/search_vacations?current_page=1と毎回それを増やしますが、毎回同じ(最初の)結果が得られます。再度成功しないでjson = {"current_page": '1'}
要求にjsonボディを追加しようとしました。 これは、これまでの私のコードです:requests
とプロキシを使用してHTTP要求ですべての結果を得る方法python
import math
import requests
session = requests.session()
proxies = {'https': 'https://97.77.104.22:3128'}
headers = {
"authority": "www.ncl.com",
"method": "GET",
"path": "/search_vacations",
"scheme": "https",
"accept": "application/json, text/plain, */*",
"connection": "keep-alive",
"referer": "https://www.ncl.com",
"cookie": "AkaUTrackingID=5D33489F106C004C18DFF0A6C79B44FD; AkaSTrackingID=F942E1903C8B5868628CF829225B6C0F; UrCapture=1d20f804-718a-e8ee-b1d8-d4f01150843f; BIGipServerpreprod2_www2.ncl.com_http=61515968.20480.0000; _gat_tealium_0=1; BIGipServerpreprod2_www.ncl.com_r4=1957341376.10275.0000; MP_COUNTRY=us; MP_LANG=en; mp__utma=35125182.281213660.1481488771.1481488771.1481488771.1; mp__utmc=35125182; mp__utmz=35125182.1481488771.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); utag_main=_st:1481490575797$ses_id:1481489633989%3Bexp-session; s_pers=%20s_fid%3D37513E254394AD66-1292924EC7FC34CB%7C1544560775848%3B%20s_nr%3D1481488775855-New%7C1484080775855%3B; s_sess=%20s_cc%3Dtrue%3B%20c%3DundefinedDirect%2520LoadDirect%2520Load%3B%20s_sq%3D%3B; _ga=GA1.2.969979116.1481488770; mp__utmb=35125182; NCL_LOCALE=en-US; SESS93afff5e686ba2a15ce72484c3a65b42=5ecffd6d110c231744267ee50e4eeb79; ak_location=US,NY,NEWYORK,501; Ncl_region=NY; optimizelyEndUserId=oeu1481488768465r0.23231006365903206",
"Proxy-Authorization": "Basic QFRLLTVmZjIwN2YzLTlmOGUtNDk0MS05MjY2LTkxMjdiMTZlZTI5ZDpAVEstNWZmMjA3ZjMtOWY4ZS00OTQxLTkyNjYtOTEyN2IxNmVlMjlk"
}
def get_count():
response = requests.get(
"https://www.ncl.com/search_vacations?cruise=1&cruiseTour=0&cruiseHotel=0&cruiseHotelAir=0&flyCruise=0&numberOfGuests=4294953449&state=undefined&pageSize=10¤tPage=",
proxies=proxies)
tmpcruise_results = response.json()
tmpline = tmpcruise_results['meta']
total_record_count = tmpline['aggregate_record_count']
return total_record_count
total_cruise_count = get_count()
total_page_count = math.ceil(int(total_cruise_count)/10)
session.headers.update(headers)
cruises = []
page_counter = 1
while page_counter <= total_page_count:
url = "https://www.ncl.com/search_vacations?current_page=" + str(page_counter) + ""
page = requests.get(url, headers=headers, proxies=proxies)
cruise_results = page.json()
for line in cruise_results['results']:
cruises.append(line)
print(line)
page_counter += 1
print(cruise_results['pagination']["current_page"])
print("----------")
print(len(cruises))
。任意のアイデアをどのように行うには?
ブラウザでの動作を確認するには、まずウェブブラウザを使用します。クッキーで簡単に作業するために 'requests.Session()'が必要な場合があります。 – furas
提案したようにSession()を作成してください。後であなたのリクエストにヘッダーを送ることを忘れないでください。(ヘッダーの中には通常Cookieがあります) –
firefox-developerとsessionを使用しています。コード 'session.headers.update(headers)'に見られるように。問題は、私がレスポンスを返すと、レスポンスに 'current_page:1'と表示されることです。つまり、私はそれらを変更する必要があります。これまでのところ、私はブラウザでもそれを行う方法を見つけることができません。 – nephilimrising