方方面面總是會需要使用一些圖片做封面或背景。圖片有兩種來源:一是通過創可貼自己動手修改下就可以用了,還一種就是在網上下載圖片。
那如何下載高清並且可以供使用的圖片了?我是使用的站長之家網站下載來的圖片(http://sc.chinaz.com/tag_tupian/OuMeiMeiNv.html),這個網站圖片高清,質量好,可以供使用。所以,本文教大家使用Python爬取美女圖片,並保存在本地。
from lxml import etree
import urllib.request
import os, time
class OuMeiSpider(object):
def __init__(self, start_page, end_page):
self.start_page = start_page
self.end_page = end_page
self.frist_url = 'http://sc.chinaz.com/tag_tupian/OuMeiMeiNv.html'
self.url = 'http://sc.chinaz.com/tag_tupian/OuMeiMeiNv_{}.html'
self.headers = {
'User-Agent': 'Win7:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'
}
def get_request(self, page):
if page == 1:
url = self.frist_url
else:
url = self.url.format(page)
# 構建請求對象
request = urllib.request.Request(url=url, headers=self.headers)
return request
def parse_content(self, content):
tree = etree.HTML(content)
src_list = tree.xpath('//div[@id="container"]/div/div/a/img/@src2')
img_name_list = tree.xpath('//div[@id="container"]/div/div/a/img/@alt')
for img_src in src_list:
# 拿到圖片鏈接
print(img_src)
img_name = img_name_list[src_list.index(img_src)]
file_name = img_name + '.' + str(img_src.split('.')[-1])
dirname = 'oumei'
print("正在下載%s-----" % file_name)
file_path = os.path.join(dirname, file_name)
# 寫入圖片
urllib.request.urlretrieve(img_src,file_path)
print("結束下載%s-----" % file_name)
time.sleep(2)
def get_response(self, request):
response = urllib.request.urlopen(request)
content = response.read().decode('utf8')
print(content)
return content
def run(self):
for page in range(self.start_page, self.end_page + 1):
# 拼接地址
request = self.get_request(page)
content = self.get_response(request)
self.parse_content(content)
def main():
start_page = int(input('請輸入起始頁:'))
end_page = int(input("請輸入終止頁:"))
obj = OuMeiSpider(start_page, end_page)
obj.run()
if __name__ == '__main__':
main()