成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python爬蟲之使用Fiddler+Postman+Python的requests模塊爬取各國(guó)國(guó)旗

laoLiueizo / 882人閱讀

摘要:流程作為上述過程的一個(gè)演示,我們使用的網(wǎng)址為頁面如下在表單中輸入德國(guó),跳轉(zhuǎn)后的頁面如下我們可以發(fā)現(xiàn),在搜索的結(jié)果中,會(huì)出現(xiàn)德國(guó)這個(gè)搜索結(jié)果。點(diǎn)擊該搜索結(jié)果,跳轉(zhuǎn)后的頁面如下在這個(gè)頁面中有我們需要的德國(guó)的國(guó)旗。

介紹

??本篇博客將會(huì)介紹一個(gè)Python爬蟲,用來爬取各個(gè)國(guó)家的國(guó)旗,主要的目標(biāo)是為了展示如何在Python的requests模塊中使用POST方法來爬取網(wǎng)頁內(nèi)容。
??為了知道POST方法所需要傳遞的HTTP請(qǐng)求頭部和請(qǐng)求體,我們可以使用Fiddler來進(jìn)行抓包,抓取上網(wǎng)過程中HTTP請(qǐng)求中的POST方法。為了驗(yàn)證Fiddler抓取到的POST請(qǐng)求,可以使用Postman進(jìn)行測(cè)試驗(yàn)證。在Postman中完成測(cè)試后,我們就可以用Python的request.POST()方法來寫我們的爬蟲了。

流程

??作為上述過程的一個(gè)演示,我們使用的網(wǎng)址為: http://country.911cha.com/ , 頁面如下:

在表單中輸入德國(guó),跳轉(zhuǎn)后的頁面如下:

我們可以發(fā)現(xiàn),在搜索的結(jié)果中,會(huì)出現(xiàn)德國(guó)這個(gè)搜索結(jié)果。點(diǎn)擊該搜索結(jié)果,跳轉(zhuǎn)后的頁面如下:

在這個(gè)頁面中有我們需要的德國(guó)的國(guó)旗。但是,怎么知道該網(wǎng)頁的具體網(wǎng)址呢?換句話說,就是怎樣得到http://country.911cha.com/GER... ?別擔(dān)心,在剛才出來的德國(guó)這個(gè)搜索結(jié)果中,我們查看其源代碼,不難發(fā)現(xiàn),在HTML源代碼中,有我們想要的東西:

在源代碼中我們能看到“GER.html”,這就意味著,只要得到搜索的結(jié)果,我們可以分析HTML源碼來得到這個(gè)搜索結(jié)果的連接網(wǎng)址,然后在該連接網(wǎng)址中獲取該國(guó)的國(guó)旗。所以,在這個(gè)爬蟲中,最困難的地方在于,如何獲取搜索結(jié)果?即,得到提交表單后的結(jié)果,也就是POST方法提交后的響應(yīng)結(jié)果。我們利用Fiddler來抓取該P(yáng)OST方法。
??我們打開Fiddler, 同時(shí)重復(fù)上面的操作,可以得到該過程的HTTP請(qǐng)求,如下圖:

Fiddler幫助我們找到了剛才提交表單過程中的一個(gè)POST請(qǐng)求,具體分析該P(yáng)OST請(qǐng)求,其請(qǐng)求頭部如下:

其請(qǐng)求體如下:

??為了驗(yàn)證Fiddler抓取的POST請(qǐng)求,我們需要要Postman來進(jìn)行測(cè)試。在用Postman進(jìn)行測(cè)試前,我們需要問:是否所有請(qǐng)求頭部中的數(shù)據(jù)都需要呢?答案是否定的,實(shí)際上,我們只需要User-Agent和Content-Type即可。在Postman中,先輸入請(qǐng)求頭部,如下:

再輸入請(qǐng)求體,如下:

點(diǎn)擊"SEND"按鈕,得到響應(yīng)后的結(jié)果,如下:

OK,這樣我們就完成了Postman的測(cè)試。

爬蟲

??于是,借助這些信息來完成request.post()的提交,同時(shí),借助BeautifulSoup來解析網(wǎng)頁,得到國(guó)家的國(guó)旗下載地址并完成下載。具體的Python代碼如下:

# -*- coding: utf-8 -*-

import urllib.request
import requests
from bs4 import BeautifulSoup

# 函數(shù):下載指定國(guó)家的國(guó)旗
# 參數(shù): country: 國(guó)家
def download_flag(country):

    # 請(qǐng)求頭部
    headers = {
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36",
                "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
              }
    # POST數(shù)據(jù)
    data = {"q": country}
    # 網(wǎng)址
    url = "http://country.911cha.com/"

    # 提交POST請(qǐng)求
    r = requests.post(url=url, data=data, headers=headers)

    # 利用BeautifulSoup解析網(wǎng)頁
    content = BeautifulSoup(r.text, "lxml")

    # 得到搜索結(jié)果(國(guó)家)所在網(wǎng)頁地址
    country = content.find_all("div", class_="mcon")[1]("ul")[0]("li")[0]("a")[0]
    link = country["href"]

    #利用GET方法得到搜索國(guó)家的網(wǎng)頁
    r2 = requests.get(url="%s/%s"%(url, link))
    # 利用BeautifulSoup解析網(wǎng)頁
    content = BeautifulSoup(r2.text, "lxml")
    # 獲取網(wǎng)頁中的圖片
    images = content.find_all("img")

    # 獲取指定國(guó)家的國(guó)旗名稱及下載地址
    for image in images:
        if "alt" in image.attrs:
            if "國(guó)旗" in image["alt"]:
                name = image["alt"].replace("國(guó)旗", "")
                link = image["src"]

    # 下載國(guó)旗圖片
    urllib.request.urlretrieve("%s/%s"%(url, link), "E://flag/%s.gif"%name)


def main():

    # countries.txt儲(chǔ)存各個(gè)國(guó)家的名稱
    file = "E://flag/countries.txt"
    with open(file, "r") as f:
        counties = [_.strip() for _ in f.readlines()]

    # 遍歷各個(gè)國(guó)家,下載國(guó)旗
    for country in counties:
        try:
            download_flag(country)
            print("%s國(guó)旗下載成功!"%country)
        except:
            print("%s國(guó)旗下載失敗~"%country)

main()

其中countries.txt的部分內(nèi)容如下:

運(yùn)行上述Python代碼,我們發(fā)現(xiàn)在E盤的flag文件夾下,已經(jīng)下載了各個(gè)國(guó)家的國(guó)旗,如下:

這樣我們就完成了本次爬蟲的任務(wù)!

總結(jié)

??本次爬蟲利用Python的requests模塊的POST方法,來模擬網(wǎng)頁中的表單提交。為了得到表單提交過程中的HTTP請(qǐng)求,即請(qǐng)求頭部和請(qǐng)求體,我們利用了抓包工具Fiddler,而Postman的作用是為了幫助我們驗(yàn)證Fiddler抓取的POST請(qǐng)求是否正是我們需要的POST請(qǐng)求,同時(shí)也能驗(yàn)證請(qǐng)求頭部及請(qǐng)求體。
??雖然整個(gè)爬蟲的過程寫的不免麻煩,但是操作的思路應(yīng)該是清晰的,再說,熟能生巧,多用幾次,也就能熟悉整個(gè)流程了。本次爬蟲只是作為整個(gè)流程的一個(gè)簡(jiǎn)單展示,讀者可以在此基礎(chǔ)上,去實(shí)現(xiàn)更為復(fù)雜的爬蟲,希望本次的分享能夠幫助到讀者。謝謝大家能讀到這兒,也歡迎大家交流~~

注意:本人現(xiàn)已開通兩個(gè)微信公眾號(hào): 因?yàn)镻ython(微信號(hào)為:python_math)以及輕松學(xué)會(huì)Python爬蟲(微信號(hào)為:easy_web_scrape), 歡迎大家關(guān)注哦~~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41918.html

相關(guān)文章

  • Java爬蟲下載全世界國(guó)家國(guó)旗圖片

    摘要:介紹本篇博客將繼續(xù)上一篇博客爬蟲之使用的模塊爬取各國(guó)國(guó)旗的內(nèi)容,將用來實(shí)現(xiàn)這個(gè)爬蟲,下載全世界國(guó)家的國(guó)旗圖片。 介紹 ??本篇博客將繼續(xù)上一篇博客:Python爬蟲之使用Fiddler+Postman+Python的requests模塊爬取各國(guó)國(guó)旗 的內(nèi)容,將用Java來實(shí)現(xiàn)這個(gè)爬蟲,下載全世界國(guó)家的國(guó)旗圖片。項(xiàng)目不再過多介紹,具體可以參考上一篇博客。??我們將全世界國(guó)家的名稱放在一個(gè)...

    YancyYe 評(píng)論0 收藏0
  • python爬蟲入門(一)

    摘要:想辦法區(qū)分爬蟲程序和正常的用戶。爬蟲是工具性程序,對(duì)速度和效率要求較高。生態(tài)圈完善,是最大對(duì)手。最要命的是爬蟲需要經(jīng)常修改部分代碼。爬蟲分類通用爬蟲也就是百度搜狐等搜索引擎。原本是為測(cè)試來測(cè)試網(wǎng)站的,后來成了爬蟲工程師最喜愛的工具。 一、爬蟲的基本知識(shí): 1. 什么是爬蟲 爬蟲的英文翻譯為spider或者crawder,意為蜘蛛或者爬行者,從字面意思我們可以體會(huì)到:爬蟲就是把自己當(dāng)做蜘...

    lentrue 評(píng)論0 收藏0
  • 首次公開,整理12年積累博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0
  • Python爬蟲基礎(chǔ)

    摘要:爬蟲架構(gòu)架構(gòu)組成管理器管理待爬取的集合和已爬取的集合,傳送待爬取的給網(wǎng)頁下載器。網(wǎng)頁下載器爬取對(duì)應(yīng)的網(wǎng)頁,存儲(chǔ)成字符串,傳送給網(wǎng)頁解析器。從文檔中獲取所有文字內(nèi)容正則匹配后記爬蟲基礎(chǔ)知識(shí),至此足夠,接下來,在實(shí)戰(zhàn)中學(xué)習(xí)更高級(jí)的知識(shí)。 前言 Python非常適合用來開發(fā)網(wǎng)頁爬蟲,理由如下:1、抓取網(wǎng)頁本身的接口相比與其他靜態(tài)編程語言,如java,c#,c++,python抓取網(wǎng)頁文檔的接...

    bang590 評(píng)論0 收藏0
  • 如何快速掌握Python數(shù)據(jù)采集與網(wǎng)絡(luò)爬蟲技術(shù)

    摘要:通過本文的學(xué)習(xí),可以快速掌握網(wǎng)絡(luò)爬蟲基礎(chǔ),結(jié)合實(shí)戰(zhàn)練習(xí),寫出一些簡(jiǎn)單的爬蟲項(xiàng)目。從技術(shù)手段來說,網(wǎng)絡(luò)爬蟲有多種實(shí)現(xiàn)方案,如。二網(wǎng)絡(luò)爬蟲技術(shù)基礎(chǔ)在本次課中,將使用技術(shù)手段進(jìn)行項(xiàng)目的編寫。 摘要:本文詳細(xì)講解了python網(wǎng)絡(luò)爬蟲,并介紹抓包分析等技術(shù),實(shí)戰(zhàn)訓(xùn)練三個(gè)網(wǎng)絡(luò)爬蟲案例,并簡(jiǎn)單補(bǔ)充了常見的反爬策略與反爬攻克手段。通過本文的學(xué)習(xí),可以快速掌握網(wǎng)絡(luò)爬蟲基礎(chǔ),結(jié)合實(shí)戰(zhàn)練習(xí),寫出一些簡(jiǎn)單的...

    W4n9Hu1 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<