2023学pythonpython小课——零基础入门——学习笔记

什么?你看百度文库还在付费?我用python实现了百度文库免费,

2023-07-11  本文已影响0人  天天玩python

前言

前几天在找一些资料想用来参考一下,然后找是找到了,结果需要vip才可以下载!什么?要花钱?那不是大冤种了?



对于这种非必要的内容,作为白嫖党主打的就是分币不刷就是陪伴,于是乎.........我直接用python直接实现了免费版,如果你能跟我一样,那么. .简直泰裤辣!!!

具体实现如下,有两个版本,简单版和难度版

1.我们先看看简单版的代码,具体代码如下:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
'''
@Time   :2023/7/8 16:04
@Author :美女
@DESC   :
'''


import requests
import os
from lxml import etree


# 创建目录方法
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')

# 计数
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

只有区区50行代码,拿到源码后,切记要:在python环境下运行和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()# 路径修改为自己电脑浏览器驱动路径
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])                    # 单击控件,即使控件被遮挡,同样可以单击
# 点击继续阅读
xpath_continue_read_button = "//div[@class='foldpagewg-icon']"                      # 获取继续阅读得到xpath
click_ele(xpath_continue_read_button)                                               # 调用click_ele()
xpath_next_content_button = "//div[@class='btn-wrap']/div[@class='btn-cancel']"     # 获取下一页的xpath
click_ele(xpath_next_content_button)                                                # 调用click_ele()
click_count = 0
while True:
    # 如果到了最后一页就跳出循环
    if web.find_elements(By.XPATH,
            "//div[@class='pagerwg-loadSucc hide']") or web.find_elements(By.XPATH,
            "//div[@class='pagerwg-button' and @style='display: none;']"):
        break
    # 点击加载更多
    xpath_loading_more_button = "//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)
# 创建文件夹进行保存
path = 'D://百度文库PPT//爬虫ppt图片'     # 看自己心情,将爬取的PPT图片放在哪里,比如:D://百度文库PPT//爬虫ppt图片
if not os.path.exists(path):        # 查找是否有存储的文件夹,没有则创建一个
    os.makedirs(path)
# 解析图片url,并保存到已创建的文件夹中
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环境和pycharm工具缺一不可,而这一次还需要安装Google插件,需要改谷歌环境变量。具体如何不会的小伙伴可以讨论!!!

上一篇下一篇

猜你喜欢

热点阅读