【Python爬蟲實戰】 圖片爬蟲-淘寶圖片爬蟲--千圖網圖片爬蟲

来源:http://www.cnblogs.com/Liuyt-61/archive/2017/12/14/8040168.html
-Advertisement-
Play Games

所謂圖片爬蟲,就是從互聯網中自動把對方伺服器上的圖片爬下來的爬蟲程式。有些圖片是直接在html文件裡面,有些是隱藏在JS文件中,在html文件中只需要我們分析源碼就能得到如果是隱藏在JS文件中,那麼就需要進行抓包分析,這兒先只講分析html源碼得出圖片,註意 這兒我們需要讀取的是高清原圖,不是經過網... ...


所謂圖片爬蟲,就是從互聯網中自動把對方伺服器上的圖片爬下來的爬蟲程式。
有些圖片是直接在html文件裡面,有些是隱藏在JS文件中,在html文件中只需要我們分析源碼就能得到
如果是隱藏在JS文件中,那麼就需要進行抓包分析,這兒先只講分析html源碼得出圖片,
註意 這兒我們需要讀取的是高清原圖,不是經過網站處理過的小圖片。

首先需要根據網址進行分析,分析出每一類商品的第幾頁第幾頁的網址之間的關聯進行自動載入指定頁碼(例如淘寶每下一頁為鏈接中s加44)

然後查看頁面源碼,找到圖片對應的鏈接,分析剔除掉後加修飾過的內容,將關鍵的內容截取在源碼中進行搜索即可找到圖片的原始地址
也就是源碼的地址。根據這個就能得到所要構造的正則表達式。
然後直接上代碼

import urllib.request
import re
import urllib.error

keyname = "短裙"
key = urllib.request.quote(keyname) #進行編碼

#偽裝瀏覽器 (因為淘寶能夠識別是否為爬蟲程式)
headers = ("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36")
opener = urllib.request.build_opener()
opener.addheaders = [headers]
#將opener添加為全局
urllib.request.install_opener(opener)

#要爬取多少頁那麼進行多少次迴圈
for i in range(0,2):
    url = "https://s.taobao.com/search?q="+key+"&imgfile=&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20171209&ie=utf8&bcoffset=4&ntoffset=4&p4ppushleft=1%2C48&s="+str(i * 44)
    #先對所在的頁面的主頁進行爬取讀取內容,也就是讀取源碼
    data = urllib.request.urlopen(url).read().decode("utf-8","ignore")
    #構造正則表達式
    pattern = 'pic_url":"//(.*?)"'
    #在當前頁根據正則進行查找,查找到的所有連接存儲為一個list
    imagelist = re.compile(pattern).findall(data)
    #遍歷列表進行每個圖片的存儲到本地文件夾
    for j in range(0,len(imagelist)):
        thisimg = imagelist[j]
        thisimageurl = "http://"+thisimg
        file = "E://pythoncode/taobaoimg1/"+"b"+str(i)+str(j)+".jpg"
        urllib.request.urlretrieve(thisimageurl,file)

 



同理進行一個千圖網(
http://www.58pic.com/)的高清原圖的爬取
第一步也是分析網站的源碼找到規律實現下一頁的載入,然後進行圖片鏈接的分析得到真實高清原圖的網址鏈接構建正則表達式
先對當前頁進行爬取,從爬取的內容中使用正則進行頁面查找,再對找到的每一個圖片鏈接進行爬取存儲到本地文件夾中。
直接上代碼

import urllib.request
import urllib.error
import re

key = "chengshi"

proxy = urllib.request.ProxyHandler({"http":"202.96.142.2:3128"})

opener = urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
urllib.request.install_opener(opener)

for i in range(1,2):
    url = "http://www.58pic.com/tupian/"+key+"-0-0-"+str(i)+".html"
    data = urllib.request.urlopen(url).read().decode("utf-8","ignore")
    pattern = '"(http://pic.qiantucdn.com/58pic/.*?)!'
    imagelist = re.compile(pattern).findall(data)
    # print(imagelist)
    for j in range(0,len(imagelist)):
        thisurl = imagelist[j]
        file = "E:/pythoncode/qiantu/"+str(i)+str(j)+".jpg"
        urllib.request.urlretrieve(thisurl,file)

 









您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • CLR(Common Language Runtime)公共語言進行時是一個可由多種編程語言使用的“進行時”。 將源代碼編譯成托管模塊 可用支持CLR的任何語言創建源代碼文件,然後用對應的編譯器檢查語法和分析源代碼。無論選擇哪個編譯器,結果都是托管模塊(managed module)。托管模塊是標準 ...
  • 元類 在 Python中,實例對象是由類生成的,而類本身也是可以被傳遞和自省的對象。那麼類對象是用什麼創建和生成的呢?答案是元類,元類就是一種知道如何創建和管理類的對象。 讓我們回顧一個內置函數type(),type不僅可以返回對象的類型,而且可以使用類名稱、基類元組、類主體定義的字典作為參數來創建 ...
  • 今天學了前後臺的連接。之前腦子一團漿糊,就連後端對資料庫的操作都不熟。就一點點來寫吧,會多少寫多少,錯了以後再改吧,可能進步比較慢,但肯定會慢慢好起來的。 以前一直對資料庫連接就不太懂。先從資料庫連接寫起。 疑問點1:之前就是不明白為什麼要有一個con,而且還是Connection類型的, 理解:你 ...
  • 1. 前言 記憶體分配與回收策略 JVM堆的結構分析(新生代、老年代、永久代) 對象優先在Eden分配 大對象直接進入老年代 長期存活的對象將進入老年代 動態對象年齡判定 空間分配擔保 JVM堆的結構分析(新生代、老年代、永久代) 對象優先在Eden分配 大對象直接進入老年代 長期存活的對象將進入老年 ...
  • 上一篇文章中我們已經成功的運行了go的代碼,這是我們邁出的最基礎的一步。 一個項目通常會依賴很多外部的庫,當依賴的庫比較多的時候,手工管理就會比較麻煩,這個時候就需要包管理工具出場了,幫你管理好所有依賴的庫。 php項目中使用composer,javascript項目中使用npm,那麼在go項目中, ...
  • 多線程爬蟲:即程式中的某些程式段並行執行,合理地設置多線程,可以讓爬蟲效率更高糗事百科段子普通爬蟲和多線程爬蟲分析該網址鏈接得出:https://www.qiushibaike.com/8hr/page/頁碼/多線程爬蟲也就和JAVA的多線程差不多,直接上代碼 1 ''' 2 #此處代碼為普通爬蟲 ... ...
  • 模式的定義 策略模式定義了一系列的演算法,並將每一個演算法封裝起來,而且它們還可以相互替換。策略模式讓演算法獨立於使用它的客戶而獨立變化。 使用場景 針對同一類型問題的多種處理方式,僅僅是具體行為有差別時。 需要安全的封裝多種同一類型的操作時。 出現同一抽象多個子類,而又需要使用if-else 或者 sw ...
  • 1 #include<stdio.h> 2 struct Student 3 { 4 int num; 5 float score; 6 }a[105]; //定義結構體的類型 7 8 void input(struct Student *a,int n) 9 { 10 int i; 11 for( ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...