前言
前幾天在找一些資料想用來參考一下,然后找是找到了橄教,結(jié)果需要vip才可以下載清寇!什么?要花錢护蝶?那不是大冤種了华烟?
對于這種非必要的內(nèi)容,作為白嫖黨主打的就是分幣不刷就是陪伴持灰,于是乎.........我直接用python直接實現(xiàn)了免費版盔夜,如果你能跟我一樣,那么. .簡直泰褲辣!N沽础返十!
具體實現(xiàn)如下,有兩個版本椭微,簡單版和難度版
1.我們先看看簡單版的代碼洞坑,具體代碼如下:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
'''
@Time :2023/7/8 16:04
@Author :美女
@DESC :
'''
import requests
import os
from lxml import etree
# 創(chuàng)建目錄方法
def create_file(file_path):
if not os.path.exists(file_path):
os.makedirs(file_path)
url = 'https://wk.baidu.com/view/526297e64531b90d6c85ec3a87c24028905f8521'
resp = requests.get(url)
# print(resp.text)
text = resp.text
html = etree.HTML(text)
img_list = html.xpath('//div[@class="mod flow-ppt-mod"]/div/div/img')
# 計數(shù)
cnt = 1
# 文件保存路徑
file_path = './wendang/'
create_file(file_path)
# 獲取圖片
for i in img_list:
try:
img_url = i.xpath('./@src')[0]
except:
img_url = i.xpath('./@data-src')[0]
# 文件名稱
file_name = f'{file_path}page_{cnt}.jpg'
print(file_name, img_url)
# 下載保存圖片
resp = requests.get(img_url)
with open(file_name, 'wb') as f:
f.write(resp.content)
cnt += 1
只有區(qū)區(qū)50行代碼,拿到源碼后蝇率,切記要:在python環(huán)境下運行和pycharm工具
2.復雜難度版本迟杂,具體代碼如下:
import os.path
import time
from selenium import webdriver
import requests
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
url = input('輸入想要下載的百度文庫地址:') # 輸入自己需要爬取的PPT地址
# 第一部分:手機模式打開一個電腦瀏覽器
options = webdriver.ChromeOptions() # 配置chrome啟動時屬性的類
mobile_emulation = {"deviceName": "iPhone 13"} # 手機模式打開瀏覽器,手機類型:iPhone 6
options.add_experimental_option("mobileEmulation", mobile_emulation) # 將mobile_emulation 添加到options中本慕,這樣瀏覽器就是通過手機模式打開
web = webdriver.Chrome()# 路徑修改為自己電腦瀏覽器驅(qū)動路徑
web.get(url)
time.sleep(2)
# 第二部分:將所有隱藏的ppt圖片展示出來
def click_ele(click_xpath):
# 單擊指定控件
click_ele = web.find_elements(By.XPATH, click_xpath)
if click_ele:
click_ele[0].location_once_scrolled_into_view # 滾動到控件位置
web.execute_script('arguments[0].click()', click_ele[0]) # 單擊控件排拷,即使控件被遮擋,同樣可以單擊
# 點擊繼續(xù)閱讀
xpath_continue_read_button = "http://div[@class='foldpagewg-icon']" # 獲取繼續(xù)閱讀得到xpath
click_ele(xpath_continue_read_button) # 調(diào)用click_ele()
xpath_next_content_button = "http://div[@class='btn-wrap']/div[@class='btn-cancel']" # 獲取下一頁的xpath
click_ele(xpath_next_content_button) # 調(diào)用click_ele()
click_count = 0
while True:
# 如果到了最后一頁就跳出循環(huán)
if web.find_elements(By.XPATH,
"http://div[@class='pagerwg-loadSucc hide']") or web.find_elements(By.XPATH,
"http://div[@class='pagerwg-button' and @style='display: none;']"):
break
# 點擊加載更多
xpath_loading_more_button = "http://span[@class='pagerwg-arrow-lower']"
click_ele(xpath_loading_more_button)
click_count += 1
print("第{}次點擊加載更多!".format(click_count))
# 等待一秒锅尘,等瀏覽器加載
time.sleep(2)
click_ele('//*[@id="wui-messagebox-cancel-1"]')
time.sleep(1)
# 圖片元素的定位及獲取
li_list = web.find_elements(By.NAME, 'retype-page')
img_url = []
for i in li_list:
h2 = i.find_element(By.mro(), 'pic')
time.sleep(3)
h3 = h2.find_element(By.LINK_TEXT, 'img')
time.sleep(1)
img = h3.get_attribute('src')
img_url.append(img)
# 創(chuàng)建文件夾進行保存
path = 'D://百度文庫PPT//爬蟲ppt圖片' # 看自己心情监氢,將爬取的PPT圖片放在哪里,比如:D://百度文庫PPT//爬蟲ppt圖片
if not os.path.exists(path): # 查找是否有存儲的文件夾藤违,沒有則創(chuàng)建一個
os.makedirs(path)
# 解析圖片url,并保存到已創(chuàng)建的文件夾中
x = 1
for g in range(len(img_url)):
r = requests.get(img_url[g])
path = '*://*//*//爬蟲ppt圖片//%d.jpg' % x
print('正在爬取' + img)
with open(path, "wb") as f:
f.write(r.content)
time.sleep(2)
f.close()
print('爬取成功')
x += 1
這一次代碼稍微多了20多行浪腐,拿到源碼python環(huán)境和pycharm工具缺一不可,而這一次還需要安裝Google插件纺弊,需要改谷歌環(huán)境變量牛欢。具體如何不會的小伙伴可以討論!O巍傍睹!