Python爬蟲Post請求返回值為-1000

夕瑶^發表於2024-07-16

今天寫了一個簡單的爬蟲程式,為了爬取kfc官網的餐廳資料,程式碼如下

# ajax的post請求--肯德基官網

def create_request(page):
    url='http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx'
    data={
	'cname':'濮陽',
	'pid':'',
	'pageIndex':page,
	'pageSize':10
	}
    new_data=urllib.parse.urlencode(data).encode('utf-8')
    headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0'
}
    # post方式不能直接拼接,要在請求物件定製的方法中加入該引數
    request=urllib.request.Request(url=url,headers=headers,data=new_data)
    return request

def get_content(request):
    response=urllib.request.urlopen(request)
    content=response.read().decode('utf-8')
    return content

def load_content(page,content):
    with open('kendeji'+str(page)+'.json','w',encoding='utf-8') as fp:
        fp.write(content)
    
  
if __name__=='__main__':
    start_page=int(input('請輸入起始頁碼'))
    end_page=int(input('請輸入終止頁碼'))
    for page in range(start_page,end_page):
        request=create_request(page)
        content=get_content(request)
        print(f"頁面 {page} 的內容: {content}")
        # load_content(page,content)

結果如下圖:

原因如下:

1.URL中的引數沒有複製全

我的URL:

url='http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx'

正確的URL:

url='http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname'

修改後的程式碼執行結果如下:

相關文章