日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python爬取文库,python爬取文库ppt的简单实现

發布時間:2023/12/18 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬取文库,python爬取文库ppt的简单实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景:最近在看各種金融相關的文檔,覺得還是課件ppt上講的邏輯清晰,好理解一些,但是各個網站下載很貴,總是在線看又怕找不著了,看著這些ppt就流口水,這就想辦法簡單的爬下來。

實驗目標下載百度文庫ppt

問題:

1、https連接請求

2、頁面存在未完全展開情況,即【繼續閱讀】需要點擊

3、存在瀏覽器js渲染,ppt的圖片連接渲染后能得到真實的

成果

下載目標:

轉換結果

思想:

1、使用selenium調用谷歌瀏覽器,實現渲染

2、模擬點擊和敲擊回車事件,實現各個頁面渲染

3、保存渲染后的ppt圖片

4、借助pptx實現ppt操作,即ppt插入圖片等操作

一、準備

下載谷歌驅動:

準備必要的第三方模塊:pptx,selenium

二、初始化谷歌瀏覽器驅動

def init_driver():

"""

初始化驅動

可以增加請求頭,模擬手機端登陸,獲取到文庫文字信息

:return:

"""

options = webdriver.ChromeOptions()

driver = webdriver.Chrome(BROWSER_PATH, chrome_options=options)

# options.add_argument(

# 'user-agent="Mozilla/5.0 (Linux; Android 4.0.4; \ Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) \ Chrome/18.0.1025.133 Mobile Safari/535.19"')

# driver = webdriver.Chrome(chrome_options=options)

return driver

三、模擬點擊和回車事件

點開繼續閱讀事件通過下面代碼實現

init_page = driver.find_element_by_xpath("//span[@class='read-all']")

driver.execute_script('arguments[0].scrollIntoView();', init_page)

init_page.click()

遍歷所有頁面,并模擬回測通過下面代碼實現

input_page = driver.find_element_by_xpath("//input[@class='cur-page']")

input_page.clear()

input_page.send_keys(index + 1)

input_page.send_keys(Keys.RETURN)

四、ppt制作

def create_ppt(name):

"""

生成ppt

:param name:

:return:

"""

prs = Presentation()

files = os.listdir("BaiduNetdiskDownload\\")

if files:

files.sort(key=lambda x: int(x[:-4]))

for k in files:

ppt = prs.slide_layouts[6]

# 添加到ppt中

ppts = prs.slides.add_slide(ppt)

# 空白ppt添加下載的圖片

left, top, width, height = Inches(0), Inches(0), Inches(10), Inches(7.5)

ppts.shapes.add_picture("BaiduNetdiskDownload\\" + k, left, top, width, height)

prs.save(name)

文件保存要重新排序,否則按字母排序會亂。

五、所有代碼

# @Time : 2020/9/1

# @Author : 大太陽小白

# @Software: PyCharm

# @blog:https://blog.csdn.net/weixin_41579863

from pptx import Presentation

from pptx.util import Inches

import requests

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

import time

import os

# 谷歌瀏覽器驅動,我放到了工程目錄下

BROWSER_PATH = 'chromedriver.exe'

def init_driver():

"""

初始化驅動

可以增加請求頭,模擬手機端登陸,獲取到文庫文字信息

:return:

"""

options = webdriver.ChromeOptions()

driver = webdriver.Chrome(BROWSER_PATH, chrome_options=options)

# options.add_argument(

# 'user-agent="Mozilla/5.0 (Linux; Android 4.0.4; \ Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) \ Chrome/18.0.1025.133 Mobile Safari/535.19"')

# driver = webdriver.Chrome(chrome_options=options)

return driver

def parser(driver, url):

"""

瀏覽器解析完成渲染,并下載圖片

:param driver:

:param url:

:return:

"""

driver.get(url)

# 點擊繼續閱讀,展開所有頁面

init_page = driver.find_element_by_xpath("//span[@class='read-all']")

driver.execute_script('arguments[0].scrollIntoView();', init_page)

init_page.click()

# 匹配所有ppt下的圖片

divs = driver.find_elements_by_xpath('//div[contains(@id,"pageNo")]//img')

index = 0

# 分頁渲染,獲得真實圖片路徑

while index < len(divs):

name = '{}.png'.format(index)

# input輸入值,并模擬回車

input_page = driver.find_element_by_xpath("//input[@class='cur-page']")

input_page.clear()

input_page.send_keys(index + 1)

input_page.send_keys(Keys.RETURN)

time.sleep(1)

divs = driver.find_elements_by_xpath('//div[contains(@id,"pageNo")]//img')

with open("BaiduNetdiskDownload\\" + name, "wb") as file:

try:

src = divs[index].get_attribute('src')

src = str(src).replace('https', 'http')

file.write(requests.get(src).content)

file.flush()

index += 1

except Exception as e:

# 可能會出錯,歇一會繼續

print('出現異常了', index, e)

time.sleep(2)

def create_ppt(name):

"""

生成ppt

:param name:

:return:

"""

prs = Presentation()

files = os.listdir("BaiduNetdiskDownload\\")

if files:

files.sort(key=lambda x: int(x[:-4]))

for k in files:

ppt = prs.slide_layouts[6]

# 添加到ppt中

ppts = prs.slides.add_slide(ppt)

# 空白ppt添加下載的圖片

left, top, width, height = Inches(0), Inches(0), Inches(10), Inches(7.5)

ppts.shapes.add_picture("BaiduNetdiskDownload\\" + k, left, top, width, height)

prs.save(name)

if __name__ == '__main__':

DEST_URL = 'https://wenku.baidu.com/view/34cf62f74b649b6648d7c1c708a1284ac8500523.html'

google_driver = init_driver()

parser(google_driver, DEST_URL)

create_ppt("期權.ppt")

原文鏈接:https://blog.csdn.net/weixin_41579863/article/details/108355253

總結

以上是生活随笔為你收集整理的python爬取文库,python爬取文库ppt的简单实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。