#!/usr/bin/python
“”“
本程序是爬蟲示例,從百度網頁上下載相應的圖片
”“”
import os
import re
from urllib import request #從urllib包中導入request模塊,針對python3
import chardet #導入chardet模塊進行檢測編碼類型
“”“
getHtml函數主要是爲了獲取網頁的源代碼,然後從中提取圖片的網址,再進行下載!
”“”
def getHtml(url):
page = request.urlopen(url)
html = page.read()
#自動檢測網頁編碼格式,然後以相應的編碼格式解碼出來,如果沒有檢測到,則使用默認的設置格式
ct = chardet.detect(html)
return html.decode(ct.get("encoding","utf-8"))
“”“
getImage函數主要是利用正則表達式從得到的網頁源代碼中提取圖片的網址,然後進行下載相應的圖片
”“”
def getImage(html):
“”“
"thumbURL":" 是相應的字符
()表示分組,匹配成功之後返回的是分組信息,只返回()內部的信息,.*?表示任何字符任何數量,用最小匹配原則
這個是整個程序中最爲重要的部分
”“”
reg = r'"thumbURL":"(https.*?.jpg)"'
imgre = re.compile(reg) #構造完畢正則表達式之後,再進行編譯處理,加快處理速度
imglist = re.findall(imgre,html)
x = 0
for imgurl in imglist:
request.urlretrieve(imgurl,"C:/Users/jorh/Desktop/python-execise/data/%d.jpg"%x) #將提取出的圖片網址進行下載
print("x = %d"%x)
x += 1
return imglist
html = getHtml("https://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&ie=gb18030&word=%D7%C0%C3%E6&fr=ala&ala=1&alatpl=adress&pos=0&hs=2&xthttps=111111")
fo = open('C:/Users/jorh/Desktop/python-execise/data/test.txt','w',encoding = "utf - 8") #創建一個文本文件,用於保存網頁源碼信息
#print(fo.name)
fo.write(html)
fo.close()
path = os.path.dirname('test.txt')
print(getImage(html)) #打印匹配成功的字符串信息