国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用Python編寫一個簡單的爬蟲

趙春朋 / 1023人閱讀

摘要:進入這篇圖集在中并沒有發現圖集有關的請求接口可能也是混排的我們可以查看頁面的源碼原來真的是混排的寫法看了一下這里用到具體怎么實現的我們不去探討了我們只需要取出數據即可。嘿嘿看我的美圖去了。

作者信息:

Author : 黃志成(小黃)

博客地址: 博客

吶,這是一篇福利教程.為什么這么說呢.我們要爬取的內容是美圖網站(嘿嘿,老司機都懂的)

廢話不多說.開始今天的表演.

這個圖集網站不要問我怎么來的.絕對不是我刻意找的.(其實是看了別的發的一篇文章,就想自己動手實現一下)

我們今天的任務就是 將這些圖集保存下來。

首先我們需要獲取到所有的列表,我們往下拉動滾動條,拉到底,會繼續自動加載內容,我們通過瀏覽器的NetWork可以發現請求的數據包

我們來分析一下這個數據包

URL:https://www.toutiao.com/search_content/?offset=0&format=json&keyword=%E6%B8%85%E7%BA%AF%E7%BE%8E%E5%A5%B3&autoload=true&count=20&cur_tab=3&from=gallery

通過url我們可以知道幾個重要的參數

offset 偏移量
count 數量
cur_tab 當前分類

這里很多朋友可能對偏移量不太了解,這里我用sql語句表示一下,如果了解sql的朋友 肯定就知道了

mysql> SELECT * FROM art LIMIT offset , count

mysql> SELECT * FROM table LIMIT 5,10;  // 檢索記錄行 6-15

mysql> SELECT * FROM table LIMIT 95,1; // 檢索記錄行 96

這里我每次讀取一條,對一條進行操作.

URL:https://www.toutiao.com/search_content/?offset=1&format=json&keyword=%E6%B8%85%E7%BA%AF%E7%BE%8E%E5%A5%B3&autoload=true&count=1&cur_tab=3&from=gallery

每次對offset 進行自增即可了

我們點擊進去 看看數據的結構.

我們需要獲取到該圖集的鏈接。

進入這篇圖集,在NetWork中并沒有發現圖集有關的請求接口,可能也是混排的.

我們可以查看頁面的源碼

原來真的是混排的寫法.看了一下這里用到vue.具體怎么實現的我們不去探討了,我們只需要取出數據即可。

那如何取出呢? 提供兩種方法,一種就是正則,一種就是自己寫一個取文本的函數.這里我用第二種作為演示,下面是取文本的函數.

def txt_wrap_by(start_str, end, html):
    start = html.find(start_str)
    if start >= 0:
        start += len(start_str)
        end = html.find(end, start)
        if end >= 0:
            return html[start:end].strip()

我們取出 JSON.parse("") 中的數據

觀察數據,可以發現 我們取出 url 就可以了,這里的數據是json但是被轉義了,我們就通過正則取出吧

正則的語法如圖上,最后我也會放出所有代碼滴,大家放心.

取到了uri 我們只要在前面拼上 http://p3.pstatp.com/ 即可.

然后保存為圖片即可~

上面說的都是思路,最后放出代碼~

import requests,os,json,re,datetime

# 主函數
def main():
    foreach_art_list()

def foreach_art_list():
    # 判斷目錄下是否存在jilv.txt文件 如果存在則讀取里面的數值
    if os.path.exists("./jilv.txt"):
        f = open("./jilv.txt")
        n = f.read()
        n = int(n)
        f.close()
    else:
        n = 1    
    while True:
        url = "http://www.toutiao.com/search_content/?offset=" + str(n) + "&format=json&keyword=%E6%B8%85%E7%BA%AF%E7%BE%8E%E5%A5%B3&autoload=true&count=1&cur_tab=3&from=gallery"
        re = requests.get(url)
        data = re.json()["data"]
        if not data:
            break
        # 運行圖片下載函數
        download_pic(data[0]["article_url"],n)
        n = n+1
        # 將n寫入文件 防止程序運行出錯 可以繼續運行
        with open("./jilv.txt", "w") as f:
            f.write(str(n))

def download_pic(url,n):
    download_pic_url = "http://p3.pstatp.com/"
    # 這里必須帶上協議頭,否則會請求失敗
    header = {
        "user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36"
    }
    res = requests.get(url,headers = header)
    content = res.text
    img_list_json = txt_wrap_by("gallery: JSON.parse("",""),",content)
    # 正則獲取所有的uri
    img_list = re.findall(r"uri":"(.*?)"",img_list_json)
    #判斷是否有此目錄
    if "img" not in os.listdir("."):
        os.mkdir("./img")
    if str(n) not in os.listdir("./img"):
        os.mkdir("./img/"+str(n))
    for v in img_list:
        img_path = download_pic_url + v
        img_path = img_path.replace("", "")
        # 讀取圖片
        atlas = requests.get(img_path).content
        # 保存圖片
        with open( "./img/" + str(n) + "/" + str(datetime.datetime.now()) +".jpg", "wb") as f:  # 把圖片寫入文件內
            f.write(atlas)


# 取出兩個文本之間的內容
def txt_wrap_by(start_str, end, html):
    start = html.find(start_str)
    if start >= 0:
        start += len(start_str)
        end = html.find(end, start)
        if end >= 0:
            return html[start:end].strip()

# 運行程序
main()

最后 展示一下 運行結果:

這個程序還有許多不完善的地方,我會在之后教程加入 redis 和 多線程 的寫法,讓他成為最快的爬蟲~

敬請期待~ 今天就到這里了. 又是周末!祝大家周末愉快。嘿嘿~ 看我的美圖去了。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44659.html

相關文章

  • Python爬蟲建站入門手記——從零開始建立采集站點(二:編寫爬蟲

    摘要:接上回第二部分,編寫爬蟲。進入微信嵌套選擇圖片和上傳圖片接口,實現一鍵上傳圖片,遇到問題看吧,我現在已經可以通過爬蟲獲取的提問標題了。微信故意省略想做小偷站的,看到這里基本上就能搞出來了。下一篇,采集入庫 上回,我裝了環境 也就是一對亂七八糟的東西 裝了pip,用pip裝了virtualenv,建立了一個virtualenv,在這個virtualenv里面,裝了Django,創建了一個...

    Codeing_ls 評論0 收藏0
  • 談談對Python爬蟲理解

    摘要:爬蟲也可以稱為爬蟲不知從何時起,這門語言和爬蟲就像一對戀人,二者如膠似漆,形影不離,你中有我我中有你,一提起爬蟲,就會想到,一說起,就會想到人工智能和爬蟲所以,一般說爬蟲的時候,大部分程序員潛意識里都會聯想為爬蟲,為什么會這樣,我覺得有兩個 爬蟲也可以稱為Python爬蟲 不知從何時起,Python這門語言和爬蟲就像一對戀人,二者如膠似漆 ,形影不離,你中有我、我中有你,一提起爬蟲,就...

    Yang_River 評論0 收藏0
  • 如何實現一個Python爬蟲框架

    摘要:這篇文章的題目有點大,但這并不是說我自覺對爬蟲這塊有多大見解,我只不過是想將自己的一些經驗付諸于筆,對于如何寫一個爬蟲框架,我想一步一步地結合具體代碼來講述如何從零開始編寫一個自己的爬蟲框架年到如今,我花精力比較多的一個開源項目算是了,這是 showImg(https://segmentfault.com/img/remote/1460000018513379); 這篇文章的題目有點大...

    feng409 評論0 收藏0
  • 爬蟲 - 收藏集 - 掘金

    摘要:在這之前,還是有必要對一些概念超輕量級反爬蟲方案后端掘金前言爬蟲和反爬蟲日益成為每家公司的標配系統。 爬蟲修煉之道——從網頁中提取結構化數據并保存(以爬取糗百文本板塊所有糗事為例) - 后端 - 掘金歡迎大家關注我的專題:爬蟲修煉之道 上篇 爬蟲修煉之道——編寫一個爬取多頁面的網絡爬蟲主要講解了如何使用python編寫一個可以下載多頁面的爬蟲,如何將相對URL轉為絕對URL,如何限速,...

    1fe1se 評論0 收藏0
  • Python

    摘要:最近看前端都展開了幾場而我大知乎最熱語言還沒有相關。有關書籍的介紹,大部分截取自是官方介紹。但從開始,標準庫為我們提供了模塊,它提供了和兩個類,實現了對和的進一步抽象,對編寫線程池進程池提供了直接的支持。 《流暢的python》閱讀筆記 《流暢的python》是一本適合python進階的書, 里面介紹的基本都是高級的python用法. 對于初學python的人來說, 基礎大概也就夠用了...

    dailybird 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<