# -*- coding: utf-8 -*-
import random
import time
from pil import image
import requests
from pyquery import pyquery as pq
class all_in_one:
def __init__(self):
self.image_name = 1
self.image_suffix = '.jpeg'
self.has_download_img = set()
self.download_url = set()
self.base = 'd:\pycharmworkplace\head_images_spider\imgs'
for i in range(2,1000):
self.download_url.add('' + str(i) + '.html')
print('初始化完成')
time.sleep(t) # 暫停t秒試一下
try:
data = requests.get(download_url, headers=self.headers).content
except exception as e:
print(e)
return
with open(filename, 'wb') as f:
f.write(data)
if (self.is_valid_image(filename)):
self.image_name += 1
self.has_download_img.add(download_url)
else:
for i in range(0, 5): #最多重試5次,5次都失敗了就放棄
t = random.randint(30, 50)
time.sleep(t) # 暫停t秒試一下
try:
data = requests.get(download_url, headers=self.headers).content
except exception as e:
print(e)
return
with open(filename, 'wb') as f:
f.write(data)
if (self.is_valid_image(filename)):
self.image_name += 1
break
# 判斷是否損壞
def is_valid_image(self, filename):
valid = true
try:
image.open(filename).load()
except oserror:
valid = false
return valid
def download_one_page(self, url):
try:
response = requests.get(url, headers=self.headers)
except exception as e:
print(e)
time.sleep(10)
return
print('請求頁面' + url + '成功.....')
t = random.randint(20, 60)
time.sleep(t)
doc = pq(response.text)
for item in doc('img.lazy').items():
self.download_img(url=item.attr('src'))
def download_page(self):
for url in self.download_url:
self.download_one_page(url)
if __name__ == '__main__':
aio = all_in_one()
aio.download_page()
從本次的過程中,深刻的認識到了在乙個健壯的程式中異常處理的重要性,以及多執行緒的威力。 記錄一次自己爬蟲的案例
簡單來講,爬蟲就是乙個探測機器,它的基本操作就是模擬人的行為去各個 溜達,點點按鈕,查查資料,或者把看到的資訊揹回來。就像乙隻蟲子在一幢樓裡不知疲倦地爬來爬去。你可以簡單地想象 每個爬蟲都是你的 分身 就像孫悟空拔了一撮汗毛,吹出一堆猴子一樣。博主之前先提前安裝的anaconda3 pip inst...
通達OA 一次系統異常問題處理
前些天,伺服器硬碟出現故障,更換了2塊硬碟。可是最近幾天cpu占用一直很高,有時都接近100 而且有2個oa的服務也啟動不了,乙個mq,乙個redis 而且系統執行也不正常 併發的流程只能乙個人收到 郵件只能乙個人收到,其他人顯示都是已刪除郵件 修改人員資訊後這個人就變成離職狀態不能登入了。種種的異...
記一次處理IE引起的上網異常處理
win7 64bit系統,ie 11 出問題。在更新記錄裡找不到ie11的更新項,也就無法通過正常解除安裝了。而網上的各種折騰解除安裝方式均宣告無效。後來無意間找到了一款國外大神開發的軟體 removeie,確實很好用 卸完之後回到了ie8,但又出了新的問題。64位ie能上網了,32位ie就上不了 ...