[1].[代碼] [Python]代碼
# coding=utf-8
import requests
import re
from lxml import etree
import time
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
#定義一個爬蟲
class spider(object):
def __init__(self):
print u'開始爬取内容。。。'
#getsource用來擷取網頁源代碼
def getsource(self,url):
html = requests.get(url)
return html.text
#changepage用來生産不同頁數的連結
def changepage(self,url,total_page):
now_page = int(re.search('index_(\d+)',url,re.S).group(1)) #可修改
page_group = []
for i in range(now_page,total_page+1):
link = re.sub('index_\d+','index_%s'%i,url,re.S) #可修改
page_group.append(link)
return page_group
#getpic用來爬取一個網頁圖檔
def getpic(self,source):
selector = etree.HTML(source)
pic_url = selector.xpath('//ul[@class="ali"]/li/div/a/img/@src') #可修改
return pic_url
#savepic用來儲存結果到pic檔案夾中
def savepic(self,pic_url):
picname=re.findall('(\d+)',link,re.S) #可修改
picnamestr = ''.join(picname)
i=0
for each in pic_url:
print 'now downloading:' + each
pic = requests.get(each)
fp = open('pic\\'+picnamestr +'-'+str(i)+ '.jpg', 'wb')
fp.write(pic.content)
fp.close()
i += 1
#ppic集合類的方法
def ppic(self, link):
print u'正在處理頁面:' + link
html = picspider.getsource(link)
pic_url = picspider.getpic(html)
picspider.savepic(pic_url)
time1=time.time()
if __name__ == '__main__':
url = 'http://www.ivsky.com/tupian/ziranfengguang/index_1.html' #可修改
picspider = spider()
all_links = picspider.changepage(url,3) #可修改
for link in all_links:
picspider.ppic(link)
time2=time.time()
print u'耗時:'+str(time2-time1)