抓取網頁圖片和文字信息並下載


本次任務為:

把搜下來的網頁進行聚類,將聚類結果顯示給用戶。用戶可以選擇其中一個類,標位關注,類的關鍵詞作為主體,用戶就可以跟蹤這個主題,了解主題。

deadline:11.09

任務解析:

基本任務:將網頁進行聚類,分別根據其類別進行存檔,圖片放到相應的文件夾,文本放到相應的文件中。

提升任務:對網頁進行持續跟蹤,將符合條件的文件,持續下載。

編譯環境綜述:

  • 操作系統:win 10 專業版
  • 編譯環境: Python 3.6
  • 編輯環境:Spyder

如果想省事,可以從睿思直接下載Anaconda Navigator,安裝后,可以直接用,封裝好的。

話不多說,先貼代碼:

#################################################
# 網頁爬蟲
# Email  : jtailong@163.com
#################################################
import re
import time
import urllib.request
import requests
from bs4 import BeautifulSoup
#添加網頁
url = 'https://www.douban.com/'
#將圖片抓取,並打包
req = urllib.request.urlopen(url)

data = req.read().decode('utf-8')

match = re.compile("data-origin=\"(.+?\.jpg)")
#j記錄圖片信息
f = open('D:\\P\圖片下載記錄.txt', 'w+')

for sj in match.findall(data):
    try:
        f.write(sj)
    except:
        print("fail")
    f.write('\n')

f.close()

f1 = open('D:\\P\Pic_information.txt', 'r+')
#開始抓取網頁圖片
x = 0
for lj in f1.readlines():
    img = urllib.request.urlretrieve(lj, 'D:/P/%s.jpg' % x)
    x += 1

f1.close()
#將網頁上所有的文字信息,記錄到TXT文件當中
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
content = soup.text
print (content)
file = open('D:\\P\網頁上所有文字信息.txt', 'w', encoding='utf-8')
file.write(content)
file.close()

 

編譯效果對比:

上圖為:原網頁;下圖為:經過抓取,可以在文件夾中看到信息。

更新:

通過這次編程,我對爬蟲的理解就是:

  1. 通過網絡傳輸協議(http),將服務器上的文本,文字等下載到本地
  2. 爬蟲解析(正則表達式)
  3. 將類別重新分配到你的文件夾(圖片保存,文本保存到TXT)當中的一個過程

如果想要系統的學習,或者更好的理解代碼,請參考

http://cuiqingcai.com/1052.html

獻丑了。

方法二:

通過跟同學交流,發下,第一個代碼的魯棒性差一些,再次運行會出現錯誤。這里,給出第二種編譯方式

import urllib.request,socket,re,sys,os
import re

import time
import urllib.request
import requests
from bs4 import BeautifulSoup
#定義文件保存路徑
targetPath = "D:\\P"
 
def saveFile(path):
    #檢測當前路徑的有效性
    if not os.path.isdir(targetPath):
        os.mkdir(targetPath)
 
    #設置每個圖片的路徑
    pos = path.rindex('/')
    t = os.path.join(targetPath,path[pos+1:])
    return t
 
#用if __name__ == '__main__'來判斷是否是在直接運行該.py文件
 
 
# 網址,向網站請求數據,並返回到本地,將這些數據讀取到data中
url = "https://www.douban.com/"

headers = {
              'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '                            'Chrome/51.0.2704.63 Safari/537.36'
           }
#上面這行,是用來偽裝成瀏覽器,防止被網站diss 
req = urllib.request.Request(url=url, headers=headers)
 
res = urllib.request.urlopen(req)
 
data = res.read()
#對讀取到本地的數據進行解析,通過后綴,匹配相應的圖片 並保存
for link,t in set(re.findall(r'(https:[^s]*?(jpg|png|gif))', str(data))):
 
    print(link)
    try:
        urllib.request.urlretrieve(link,saveFile(link))
    except:
        print('失敗')
#將網站的文本信息解析,並保存到相應的TXT文本當中
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
content = soup.text
print (content)
file = open('D:\\P\網頁上所有文字信息.txt', 'w', encoding='utf-8')
file.write(content)
file.close()

這次效果為:

其中txt文件的效果為:

 

 

歡迎大家討論。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM