最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實戰(zhàn)練習之終于對肯德基下手

 更新時間:2021年10月12日 09:16:03   作者:Bitdancing  
讀萬卷書不如行萬里路,學的扎不扎實要通過實戰(zhàn)才能看出來,本篇文章手把手帶你爬下肯德基的官網(wǎng),大家可以在過程中查缺補漏,看看自己掌握程度怎么樣

請?zhí)砑訄D片描述

準備工作

查看肯德基官網(wǎng)的請求方法:post請求。

在這里插入圖片描述

X-Requested-With: XMLHttpRequest 判斷得肯德基官網(wǎng)是ajax請求

在這里插入圖片描述

通過這兩個準備步驟,明確本次爬蟲目標:
ajax的post請求肯德基官網(wǎng) 獲取上??系禄攸c前10頁。

分析

獲取上??系禄攸c前10頁,那就需要先對每頁的url進行分析。

第一頁

# page1
# http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname
# POST
# cname: 上海
# pid:
# pageIndex: 1
# pageSize: 10

第二頁

# page2
# http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname
# POST
# cname: 上海
# pid:
# pageIndex: 2
# pageSize: 10

第三頁依次類推。

程序入口

首先回顧urllib爬取的基本操作:

# 使用urllib獲取百度首頁的源碼
import urllib.request

# 1.定義一個url,就是你要訪問的地址
url = 'http://www.baidu.com'

# 2.模擬瀏覽器向服務(wù)器發(fā)送請求 response響應
response = urllib.request.urlopen(url)

# 3.獲取響應中的頁面的源碼 content內(nèi)容
# read方法 返回的是字節(jié)形式的二進制數(shù)據(jù)
# 將二進制數(shù)據(jù)轉(zhuǎn)換為字符串
# 二進制-->字符串  解碼 decode方法
content = response.read().decode('utf-8')

# 4.打印數(shù)據(jù)
print(content)
  • 定義一個url,就是你要訪問的地址
  • 模擬瀏覽器向服務(wù)器發(fā)送請求 response響應
  • 獲取響應中的頁面的源碼 content內(nèi)容
if __name__ == '__main__':
    start_page = int(input('請輸入起始頁碼: '))
    end_page = int(input('請輸入結(jié)束頁碼: '))

    for page in range(start_page, end_page+1):
        # 請求對象的定制
        request = create_request(page)
        # 獲取網(wǎng)頁源碼
        content = get_content(request)
        # 下載數(shù)據(jù)
        down_load(page, content)

對應的,我們在主函數(shù)中也類似聲明方法。

url組成數(shù)據(jù)定位

請?zhí)砑訄D片描述

爬蟲的關(guān)鍵在于找接口。對于這個案例,在預覽頁可以找到頁面對應的json數(shù)據(jù),說明這是我們要的數(shù)據(jù)。

請?zhí)砑訄D片描述

構(gòu)造url

不難發(fā)現(xiàn),肯德基官網(wǎng)的url的一個共同點,我們把它保存為base_url。

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

參數(shù)

老樣子,找規(guī)律,只有'pageIndex'和頁碼有關(guān)。

    data = {
        'cname': '上海',
        'pid': '',
        'pageIndex': page,
        'pageSize': '10'
    }

post請求

  •  post請求的參數(shù) 必須要進行編碼

data = urllib.parse.urlencode(data).encode('utf-8')

  • 編碼之后必須調(diào)用encode方法
  • 參數(shù)放在請求對象定制的方法中:post的請求的參數(shù),是不會拼接在url后面的,而是放在請求對象定制的參數(shù)中

所以將data進行編碼

data = urllib.parse.urlencode(data).encode('utf-8')

標頭獲?。ǚ乐狗磁赖囊环N手段)

請?zhí)砑訄D片描述

請?zhí)砑訄D片描述

即 響應頭中UA部分。

User Agent,用戶代理,特殊字符串頭,使得服務(wù)器能夠識別客戶使用的操作系統(tǒng)及版本,CPU類型,瀏覽器及版本,瀏覽器內(nèi)核,瀏覽器渲染引擎,瀏覽器語言,瀏覽器插件等。

 headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38'
    }

請求對象定制

參數(shù),base_url,請求頭都準備得當后,就可以進行請求對象定制了。

 request = urllib.request.Request(base_url,
  headers=headers, data=data)

獲取網(wǎng)頁源碼

把request請求作為參數(shù),模擬瀏覽器向服務(wù)器發(fā)送請求 獲得response響應。

 response = urllib.request.urlopen(request)
    content = response.read().decode('utf-8')

獲取響應中的頁面的源碼,下載數(shù)據(jù)

使用 read()方法,得到字節(jié)形式的二進制數(shù)據(jù),需要使用 decode進行解碼,轉(zhuǎn)換為字符串。

content = response.read().decode('utf-8')

然后我們將下載得到的數(shù)據(jù)寫進文件,使用 with open() as fp 的語法,系統(tǒng)自動關(guān)閉文件。

def down_load(page, content):
    with open('kfc_' + str(page) + '.json', 'w', encoding='utf-8') as fp:
        fp.write(content)

全部代碼

# ajax的post請求肯德基官網(wǎng) 獲取上??系禄攸c前10頁

# page1
# http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname
# POST
# cname: 上海
# pid:
# pageIndex: 1
# pageSize: 10

# page2
# http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname
# POST
# cname: 上海
# pid:
# pageIndex: 2
# pageSize: 10

import urllib.request, urllib.parse

def create_request(page):
    base_url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname'

    data = {
        'cname': '上海',
        'pid': '',
        'pageIndex': page,
        'pageSize': '10'
    }

    data = urllib.parse.urlencode(data).encode('utf-8')

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38'
    }

    request = urllib.request.Request(base_url, headers=headers, data=data)
    return request

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

def down_load(page, content):
    with open('kfc_' + str(page) + '.json', 'w', encoding='utf-8') as fp:
        fp.write(content)

if __name__ == '__main__':
    start_page = int(input('請輸入起始頁碼: '))
    end_page = int(input('請輸入結(jié)束頁碼: '))

    for page in range(start_page, end_page+1):
        # 請求對象的定制
        request = create_request(page)
        # 獲取網(wǎng)頁源碼
        content = get_content(request)
        # 下載數(shù)據(jù)
        down_load(page, content)

爬取后結(jié)果

在這里插入圖片描述

鞠躬?。?!其實還爬過Lisa的照片,想看爬蟲代碼的歡迎留言 ?。?!

到此這篇關(guān)于Python實戰(zhàn)練習之終于對肯德基下手的文章就介紹到這了,更多相關(guān)Python 肯德基官網(wǎng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python中列表添加元素的幾種方式(+、append()、extend())

    python中列表添加元素的幾種方式(+、append()、extend())

    本文主要介紹了python中列表添加元素的幾種方式(+、append()、extend()),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • 使用Pandas的ExcelWriter操作excel的方法

    使用Pandas的ExcelWriter操作excel的方法

    這篇文章主要介紹了使用Pandas的ExcelWriter操作excel的方法,ExcelWriter這個插件有個坑,就是已經(jīng)設(shè)置好的格式是無法更改的,因此,由pandas轉(zhuǎn)成excel的時候,必須將格式清除,尤其是表頭的格式需要大家多多注意,本文結(jié)合示例代碼講解的非常詳細,需要的朋友參考下吧
    2023-11-11
  • 如何使用pip安裝清華大學鏡像源

    如何使用pip安裝清華大學鏡像源

    這篇文章主要為大家介紹了如何使用pip安裝清華大學鏡像源步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • 使用Python編寫一個桌面便簽應用

    使用Python編寫一個桌面便簽應用

    ChatGPT的編程能力也不差,本文將一步一步提出要求,讓ChatGPT根據(jù)我們的要求,編寫出一個可用的,可打包運行的桌面便簽,感興趣的可以了解一下
    2023-06-06
  • pytorch中nn.Flatten()函數(shù)詳解及示例

    pytorch中nn.Flatten()函數(shù)詳解及示例

    nn.Flatten是一個類,而torch.flatten()則是一個函數(shù),下面這篇文章主要給大家介紹了關(guān)于pytorch中nn.Flatten()函數(shù)詳解及示例的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 通過實例了解Python異常處理機制底層實現(xiàn)

    通過實例了解Python異常處理機制底層實現(xiàn)

    這篇文章主要介紹了通過實例了解Python異常處理機制底層實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • 基于Python編寫windows電腦用戶操作記錄查看器

    基于Python編寫windows電腦用戶操作記錄查看器

    這篇文章主要為大家詳細介紹了如何基于Python編寫一個windows電腦用戶操作記錄查看器,可以讀取系統(tǒng)現(xiàn)有的日志記錄用戶,感興趣的小伙伴可以了解下
    2025-02-02
  • python輕松過濾處理臟話與特殊敏感詞匯

    python輕松過濾處理臟話與特殊敏感詞匯

    我們開發(fā)的系統(tǒng)往往都離不開信息的處理,這些信息有的內(nèi)容非常敏感,就需要過濾掉不容許出現(xiàn),
    2022-07-07
  • Python數(shù)據(jù)可視化實現(xiàn)多種圖例代碼詳解

    Python數(shù)據(jù)可視化實現(xiàn)多種圖例代碼詳解

    這篇文章主要介紹了Python數(shù)據(jù)可視化實現(xiàn)多種圖例代碼詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • Python 包含漢字的文件讀寫之每行末尾加上特定字符

    Python 包含漢字的文件讀寫之每行末尾加上特定字符

    這篇文章主要介紹了Python 包含漢字的文件讀寫之每行末尾加上特定字符的相關(guān)資料,需非常不錯,具有參考借鑒價值,要的朋友可以參考下
    2016-12-12

最新評論

许昌市| 涿鹿县| 潜江市| 五寨县| 怀来县| 马山县| 孟村| 阿拉善盟| 林州市| 左贡县| 仁怀市| 宜章县| 朝阳县| 积石山| 华亭县| 东安县| 容城县| 南雄市| 莱西市| 天镇县| 洪雅县| 赞皇县| 田阳县| 门头沟区| 信阳市| 托克逊县| 阳西县| 集贤县| 台州市| 重庆市| 白山市| 平舆县| 留坝县| 泰兴市| 罗源县| 含山县| 钦州市| 延庆县| 德钦县| 紫云| 礼泉县|