1、關鍵點
- 使用selenium模擬游覽器所袁,并動態(tài)調(diào)用腳本盏档,模擬登陸及搜索操作
- 下拉刷新
- 創(chuàng)建文件夾、獲取文件
- 下載資源
2燥爷、完整源碼
#該例子在2018.8.29測試可運行
from selenium import webdriver
from bs4 import BeautifulSoup
import os
import requests
import time
from selenium.webdriver.common.keys import Keys
brower=webdriver.PhantomJS()
class DownPicture():
def __init__(self):
self.folder_path = 'C:\HuaPicture'
#----------------------------保存圖片------------------------------------
def save_img(self, url, file_name):
print('開始請求圖片地址...',url)
img = requests.get(url)
print('開始保存圖片...')
f = open(file_name, 'ab')
f.write(img.content)
print('圖片保存成功蜈亩!',file_name)
f.close()
#----------------------------創(chuàng)建文件夾------------------------------------
def mkdir(self, path):
isExists = os.path.exists(path)
if not isExists:
print('創(chuàng)建名字叫做', path, '的文件夾')
os.makedirs(path)
print('創(chuàng)建成功!')
return True
else:
print(path, '文件夾已經(jīng)存在了前翎,不再創(chuàng)建')
return False
#----------------------------下拉刷新------------------------------------
def scroll_down(self, driver, times):
for i in range(times):
print("開始執(zhí)行第", str(i + 1),"次下拉操作")
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") #執(zhí)行JavaScript實現(xiàn)網(wǎng)頁下拉倒底部
print("第", str(i + 1), "次下拉操作執(zhí)行完畢")
print("第", str(i + 1), "次等待網(wǎng)頁加載......")
time.sleep(5)
#----------------------------主函數(shù),獲得圖片------------------------------------
def get_pic(self):
browser = webdriver.PhantomJS()
browser.maximize_window()
browser.get('http://huaban.com')
time.sleep(10)
#登錄
browser.execute_script("app.requireLogin('', {to: 'login'});return false;")
time.sleep(1)
loginName = browser.find_element_by_name("email")
loginPwd = browser.find_element_by_name("password")
loginBtn = browser.find_elements_by_partial_link_text("登錄")
loginName.send_keys("838613546@qq.com")
loginPwd.send_keys("******")
loginBtn[1].click()
print("登錄成功")
time.sleep(10)
#搜索
search = browser.find_element_by_id("query") #搜索框
search.clear()
search.send_keys("花")
search.send_keys(Keys.RETURN)
time.sleep(5)
#下拉加載數(shù)據(jù)
self.scroll_down(browser, 4)
#使用BeautifulSoup稚配,頁面數(shù)據(jù)文檔化
all_a = BeautifulSoup(browser.page_source, 'lxml').find_all('img')
#創(chuàng)建文件夾
is_new_folder = self.mkdir(self.folder_path)
os.chdir(self.folder_path) #切換路徑至上面創(chuàng)建的文件夾
file_names = os.listdir(self.folder_path)#獲取文件家中的所有文件名,類型是list
for a in all_a:
img_url = a['src']
if 'http' not in img_url:
img_url="http:"+img_url
if 'img.hb.aicdn.com' not in img_url:
continue
name_start_pos = img_url.index('.com/') + 5 #通過找.com/的位置港华,來確定它之后的字符位置
img_name = img_url[name_start_pos:] + '.jpg'
if is_new_folder:
self.save_img(img_url, img_name) # 調(diào)用save_img方法來保存圖片
else:
if img_name not in file_names:
self.save_img(img_url, img_name) # 調(diào)用save_img方法來保存圖片
else:
print("該圖片已經(jīng)存在:", img_name, "道川,不再重新下載。")
beauty = DownPicture() #創(chuàng)建類的實例
beauty.get_pic() #執(zhí)行類中的方法
最后編輯于 :
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者