㈠ 怎麼樣通過超鏈接下載圖片
利用 file_get_contents 可以讀取 網路上的 文件內容 並保存到 變數
然後在用 file_put_contents 保存到 本地就可以了,
如果要讀取網路文件 需要 開啟 allow_url_fopen 配置
file_put_contents 只有PHP5才能用
-------------------------
第2種 你可以用
fopen fread fwrite fclose 這個手冊上有說明 速度要比上面的 快一些吧
--------------------------
第3種
你可以用 GD函數 , 首先要根據連接 獲取 圖片擴展名
然後選擇 imagecreatefromjpeg imagecreatefrompng imagecreatefromgif
其中一個函數 來 讀取 圖片,
這樣好處是 還可以進行 格式轉換, 縮略圖等等
最後用imagepng imagejpeg imagegif 保存就可以了
---------------------------------
最後在加一句 , 代碼中獲取圖片 路徑後 一定要 自己完善一下
必須加上 http://網址/.... 等 這個要根據 網頁路徑和 圖片路經 來判斷了
㈡ windows python網路下載文件存在哪裡
這個下載會默認放置在與你當前腳本相同的目錄下面的。
比如你的腳本位置 : d:/spider/a.py
那麼你下載的文件 : d:/spider/**.*
要是沒有的話,說明沒有下載成功。
㈢ Python3.xx中寫爬蟲,下載圖片除了urlretrieve方法,還有什麼庫的什麼方法呢
Part 1. urllib2
urllib2是Python標准庫提供的與網路相關的庫,是寫爬蟲最常用的一個庫之一。
想要使用Python打開一個網址,最簡單的操作即是:
your_url = "http://publicdomainarchive.com/"html = urllib2.urlopen(your_url).read()12
這樣所獲得的就是對應網址(url)的html內容了。
但有的時候這么做還不夠,因為目前很多的網站都有反爬蟲機制,對於這么初級的代碼,是很容易分辨出來的。例如本文所要下載圖片的網站http://publicdomainarchive.com/,上述代碼會返回HTTPError: HTTP Error 403: Forbidden錯誤。
那麼,在這種情況下,下載網路圖片的爬蟲(雖然只有幾行代碼,但一個也可以叫做爬蟲了吧,笑),就需要進一步的偽裝。
要讓爬蟲偽裝成瀏覽器訪問指定的網站的話,就需要加入消息頭信息。所謂的消息頭信息就是在瀏覽器向網路伺服器發送請求時一並發送的請求頭(Request Headers)信息和伺服器返回的響應頭(Response Headers)信息。
例如,使用FireFox打開http://publicdomainarchive.com/時所發送的Request Headers的部分內容如下:
Host:"publicdomainarchive.com/"User-Agent:"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"...1234
還有一些其他屬性,但其中偽裝成瀏覽器最重要的部分已經列出來了,即User-Agent信息。
要使用Headers信息,就不能再僅僅向urlopen方法中傳入一個地址了,而是需要將HTTP Request的Headers封裝後傳入:
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}req = urllib2.Request(url = url, headers = headers)content = urllib2.urlopen(req).read()123
這樣,就獲得了網站的html內容。
接下來,就需要從html去獲取圖片的鏈接。
Part 2. HTMLParser
HTMLParser是Python提供的HTML解析庫之一。
但Python提供的這個類中很多方法都沒有實現,因而基本上這個庫只負責進行解析,但解析完了什麼都不做。所以如果需要對HTML中的某些元素進行加工的話,就需要用戶自己去實現其中的一些方法。本文僅實現其中的handle_starttag方法:
class MyHTMLParser(HTMLParser): #繼承HTMLParser類
def __init__(self): #初始化
HTMLParser.__init__(self) def handle_starttag(self, tag, attrs):
#參數tag即由HTMLParser解析出的開始標簽,attrs為該標簽的屬性
if tag == "img": #下載圖片所需要的img標簽
if len(attrs) == 0: pass
else: for (variable, value) in attrs: #在attrs中找到src屬性,並確定其是我們所要下載的圖片,最後將圖片下載下來(這個方法當然也有其他的寫法)
if variable == "src" and value[0:4] == 'http' and value.find('x') >= 0:
pic_name = value.split('/')[-1] print pic_name
down_image(value, pic_name)123456789101112131415
Part 3. 下載圖片
從handle_starttag方法中,我們已經獲得了圖片的url,那麼,最後一步,我們要下載圖片了。
當然,要獲得網路上的圖片,自然也需要向伺服器發送請求,一樣需要用到urllib2這個庫,也需要用到上面所用到的請求頭。
以下是down_image()方法的主要代碼:
binary_data = urllib2.urlopen(req).read()
temp_file = open(file_name, 'wb')
temp_file.write(binary_data)
temp_file.close()1234
因為這次打開的網址是個圖片,所以urllib2.urlopen(req).read()所獲取的就是圖片的數據,將這些數據需要以二進制的方式寫入本地的圖片文件,即將圖片下載下來了。
因為圖片的url的最後一部分是圖片的名字,所以可以直接用做本地的文件名,不用擔心命名沖突,也不用擔心後綴不符,很是方便。
Part 4. getFreeImages.py
這個下載圖片的腳本的完整代碼如下:
import urllib2,osfrom HTMLParser import HTMLParser
class MyHTMLParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self) #self.links = {}
def handle_starttag(self, tag, attrs):
#print "Encountered the beginning of a %s tag" % tag
if tag == "img": if len(attrs) == 0: pass
else: for (variable, value) in attrs: if variable == "src" and value[0:4] == 'http' and value.find('x') >= 0:
pic_name = value.split('/')[-1] print pic_name
down_image(value, pic_name)def down_image(url,file_name):
global headers
req = urllib2.Request(url = url, headers = headers)
binary_data = urllib2.urlopen(req).read()
temp_file = open(file_name, 'wb')
temp_file.write(binary_data)
temp_file.close()if __name__ == "__main__":
img_dir = "D:\\Downloads\\domain images"
if not os.path.isdir(img_dir):
os.mkdir(img_dir)
os.chdir(img_dir) print os.getcwd()
url = ""
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
all_links = []
hp = MyHTMLParser() for i in range(1,30):
url = 'http://publicdomainarchive.com/public-domain-images/page/' + str(i) + '/'
req = urllib2.Request(url = url, headers = headers)
content = urllib2.urlopen(req).read()
hp.feed(content)
hp.close()041424344454647484950
㈣ python獲取圖片保存本地,圖片放在div里,看了半天xhr沒有發現,然後網站上有一個下載按鈕,該怎麼鬧了
用爬蟲爬取圖片的時候,最好以網頁源碼為准,因為有時網頁源碼跟你在開發者模式裡面看到的不一樣。先把用 python 把網頁源碼保存成文件,再找找自己要的目標在哪裡。
㈤ 如何獲得一個網站下的所有圖片
在打開的網頁中,找到「文件」菜單,再後"另存為" 類型要全部, 保存後去保存的地方找images文件夾,裡面就有圖片
㈥ python 網路爬蟲,怎麼自動保存圖片
defdownload_poster_image(movie):#定義一個下載圖片函數
src=movie#取出它的url
r=requests.get(src)#去獲取這個url
fname=url.split('/')[-1]#從url裡面獲取這個文件名
withopen(fname,'wb')asf:#應答的內容寫進去並且使用二進制
f.write(s.content)
movie['poster-path']=fname
res=requests.get(url)
img_url=res.xpath('//img[@class="q-img-item"]/@src')
movie=img_url
download_poster_image(movie)#執行函數
㈦ c# 寫的爬蟲 怎麼可以把從任何網站抓取的任何格式的圖片存儲本地
與樓上意見相反。別說任何格式的圖片了,就是任何格式的任何文件,那不也是一樣的抓和儲存?不就是普通的下文件嗎?以byte[]的形式讀出來寫到文件里唄。爬蟲的重點從來不是下載的部分,這部分是框架能完成的;只有那些框架做不了的,要你自己寫的地方,才是重點。
㈧ Heritrix測試爬蟲,為什麼沒有mirror文件夾呢,在哪兒看下載下來的圖片之類的文件jobs裡面的文件是
將ARCWriterProcessor這項,修改成MirrorWriterProcessor才會保存為鏡像文件的,選擇完之後點擊Add,這時在看這個選項,發現多了一個mirror write processor,把沒用掉的remove掉即可,
㈨ 爬蟲爬的圖片在哪兒
在這行代碼裡面的路徑
with open( '在這里', 'wb') as f:
里你可以指定路徑,如:D:\圖片 \文件名.後綴名 那麼就會存儲在D盤的圖片文件夾裡面
不寫路徑那麼就在你當前py文件裡面
㈩ 使用Python爬蟲下載圖片,得到的圖片不顯示
你需要檢查一下你的結果,看看是否請求成功了。可能伺服器返回的並不是一個圖片,但是你強制給他寫入到圖片格式文件中了,所以沒辦法顯示。
你可以通過輸出response或者使用抓包軟體來檢查。