over 7 years ago
延續之前抓取 http://blog.marsw.tw 網頁的例子
這裡示範如何把該頁的圖片存取下來的方法:
我們利用lxml這個額外的module來快速處理html來獲取我們想要的資訊
而lxml所使用的是xpath的語法
[程式碼]
# encoding: utf-8
import urllib2
from lxml import etree
request = urllib2.Request("http://blog.marsw.tw")
response = urllib2.urlopen(request)
html = response.read()
page = etree.HTML(html)
count = 0
for url in page.xpath(u"//img/@src"):
if url.startswith("http:"):
print url
try:
img_request = urllib2.Request(url)
img_response = urllib2.urlopen(img_request)
img = img_response.read()
except:
continue
count = count+1
filename = str(count)+".jpg"
pic_out = file(filename,'w')
pic_out.write(img)
pic_out.close()
[程式說明]
想要抓圖片,首先要先獲得圖片的url,
而html tag中,圖片的url是記錄在img這個tag的src屬性
因此lxml的語法,找出所有img tag的src屬性寫法就是//img/@src
,並且以unicode編碼
找出開頭是http的src url(其他是用相對路徑,無法直接存取該圖),之後就對該圖片做存取的動作,
同時為了避免該圖的連結失效,而造成程式中斷,因此加上了try/except的機制
爬蟲系列教學文目錄
爬蟲系列教學文程式碼
安裝Python及Python常用語法可參考 Python - 十分鐘入門