• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • Python爬蟲極簡入門-單網頁版

    標簽: python  爬蟲

    如果你也聽說過炫酷的爬蟲,卻一直沒有成功實現自制的想法,這篇教程會幫上忙。

    今天,咱們先來看一下如何制作一個能運行的極簡爬蟲。做中學。

    DIY骨干爬蟲-單網頁版

    首先下載 python 2,我們將制作一個名為骨干爬蟲的Python爬蟲程序:

    爬蟲是干嘛的?

    是用來自動下載網絡上東西的程序,不詳細舉例了。

    爬蟲的運行步驟

    1. 獲取指定的網頁的地址對應網頁數據X
    2. 從X中用正則匹配出你需要的信息:
      • 新網址Y:訪問goto 1或保存(簡單爬蟲就不管啦,哈哈哈)
      • 你需要的內容T:保存
      • 需要獲取的文件的路徑P:保存

    概念上的難點

    • 如何爬?-遍歷新網頁保存本網頁連接們的方式
    • 獲取信息-如何保存圖片或者其他文件?有API,直接調用

    你需要做的事情

    1. 找到你需要的文件(圖片,rar隨便什么)在網頁中的地址
    2. 設計一個正則表達式匹配它

    行動

    無論你使用python2還是3,我給出兩個版本的代碼,你可以看到他們的區別很小

    復制下面的內容到python2的編輯器里,運行。查看images里面的內容如果成功它里面會有一些圖片:

    #python 2.*的代碼
    from urlparse import urlsplit
    from os.path import basename
    import urllib2
    import re
    import requests
    import os
    import json
    
    
    url = 'http://www.juemei.com/mm/'#你的網址
    
    if not os.path.exists('images'):
        os.mkdir("images")
    
    #1. 偽裝啊
    header = {
        'User-Agent': "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:34.0) Gecko/20100101 Firefox/34.0",
        'Host': "www.baidu.com",#偽裝來源,斗智斗勇
        'Referer': url
    }
    
    #下載一個網頁
    url_content = urllib2.urlopen(url).read()
    
    
    #正則匹配你要下載的文件網址
    img_urls = re.findall('img .*?src="(.*?.jpg)"',url_content)
    
    #循環處理匹配到文件網址
    for img_url in img_urls:
        try:
            #獲取循環網址之一的遠程文件的數據
            img_data = urllib2.urlopen(img_url).read()
    
            #讓它在本地的名字也是服務器上的名字
            file_name = basename(urlsplit(img_url)[2])
    
            #保存
            output = open('images/' + file_name, 'wb')
            output.write(img_data)
            output.close()
            #try except 一旦下載某個文件失敗就跳過這個文件
        except:
            pass

    Python3

    #python 3.*
    from urllib.parse import urlsplit
    from os.path import basename
    import urllib.request
    import re
    import requests
    import os
    import json
    
    
    url = 'http://www.juemei.com/mm/'#你的網址
    
    if not os.path.exists('images'):
        os.mkdir("images")
    
    #1. 偽裝啊
    header = {
        'User-Agent': "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:34.0) Gecko/20100101 Firefox/34.0",
        'Host': "www.baidu.com",#偽裝來源,斗智斗勇
        'Referer': url
    }
    
    #下載一個網頁
    url_content = urllib.request.urlopen(url).read()
    
    url_content = url_content.decode('utf-8')
    
    #正則匹配你要下載的文件網址
    img_urls = re.findall('img .*?src="(.*?.jpg)"',url_content)
    
    #循環處理匹配到文件網址
    for img_url in img_urls:
        try:
            #獲取循環網址之一的遠程文件的數據
            img_data = urllib.request.urlopen(img_url).read()
    
            #讓它在本地的名字也是服務器上的名字
            file_name = basename(urlsplit(img_url)[2])
    
            #保存
            output = open('images/' + file_name, 'wb')
            output.write(img_data)
            output.close()
            #try except 一旦下載某個文件失敗就跳過這個文件
        except:
            pass
    

    可能遇到的障礙

    • 找不到requests

    找不到requests

    執行下面命令,來安裝requests:

    C:\Python27>python.exe -m pip install requests

    pip

    如果你連pip都沒有安裝,你需要重新安裝python2,并選中所有的勾。

    • 找不到文件夾images
      它在你保存的py文件的同目錄下.

    效果

    效果

    下一節我們將探索以下內容:

    骨干爬蟲-真爬蟲-多頁面

    骨干爬蟲-反屏蔽-代理

    骨干爬蟲-高性能-異步

    版權聲明:本文為dalerkd原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/dalerkd/article/details/72889392

    智能推薦

    Elasticsearch 極簡入門

    1. 單機部署 考慮到阿里云 Elasticsearch 使用 6.7.X 版本,本小節我們基于 6.7.2 版本進行安裝部署。 前置準備: 1、安裝 JDK 。 2、修改 /etc/security/limits.conf ,在此配置中增加以下內容。 如果服務器已經配置好,可以不用重復配置。需要在 Root 下執行。 修改完成后同時使用命令修改配置:  這些配置主要...

    JApiDocs 極簡入門

    JApiDocs java api接口文檔 源碼地址: https://github.com/YeDaxia/JApiDocs 1 、引入依賴 2 、創建 JApiDocs 配置 創建 TestJApiDocs 類,作為 JApiDocs 的配置,生成接口文檔 : 2 、代碼注釋 JApiDocs 是通過解析 Controller 源碼上的 Java 注釋,所以我們需要在相關的類、方法、屬性上,進...

    Dockerfile極簡入門

    Docker會依據Dockerfile內部的指令來在基礎鏡像上構建新的內容。 1. FROM 指明構建的新鏡像是來自于哪個基礎鏡像,例如: 2. MAINTAINER 指明鏡像維護著及其聯系方式(一般是郵箱地址),例如: 不過,MAINTAINER并不推薦使用,更推薦使用LABEL來指定鏡像作者,例如:LABEL maintainer="edisonzhou.cn" 3. RU...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    猜你喜歡

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    精品国产乱码久久久久久蜜桃不卡