Python3爬蟲之爬取百度高清圖片
阿新 • • 發佈:2019-01-05
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author: OFZFZS # Datetime:2018/3/23 11:00 # Description: 百度圖片爬取 這裡只做了簡單處理,注意百度圖片返回的資料是ajax資料, # 每次返回的是30條,但是我只看到普通圖片,高清的圖片地址好像加密了,所以我這裡只取三十張,沒有用Ajax. import re import urllib from urllib import request from urllib import parse import os class Spider: def __init__(self, name): self.name = name self.item_list_middle = [] self.item_list_obj = [] self.i = 1 #儲存圖片時起名字用的變數 def loadPage(self): # request.quote(self.name) 和parse.urlencode()這裡的效果是一樣的,需要注意的是第二個裡面只能放字典 dict1 = {"word": self.name} encodeName = parse.urlencode(dict1) url = "https://image.baidu.com/search/index?tn=baiduimage&" + encodeName headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"} req = request.Request(url, headers=headers) response = request.urlopen(req) html = response.read().decode("utf-8") # 正則處理 # 標清圖片地址 pattern = re.compile(r'\"middleURL\"\:\"(.*?)\"\,', re.S) self.item_list_middle = pattern.findall(html) # 高清圖片地址 #正則 瞎寫的 pattern = re.compile(r'\"objURL\"\:\"(.*?)\"\,', re.S) self.item_list_obj = pattern.findall(html) def writeToFile(self): if os.path.exists("爬取圖片") == False: os.mkdir("爬取圖片") for item in self.item_list_middle: print(item) urllib.request.urlretrieve(item, "爬取圖片/%d.jpg" % self.i) self.i += 1 print("處理成功..") if __name__ == "__main__": spider = Spider("美女") spider.loadPage() spider.writeToFile()