Python使用webdriver爬取百度文库

前言

不知道大家有没有过这样的经历,当你写论文搜索资料时,好不容易搜到一篇好文章准备往自己论文里复制时却发现复制不了,所以只能硬着头皮把那段话又一个字一个字敲出来(大多数百度文库就是这样)。这样其实很费时间的。那有没有什么好办法啊?我的答案是 当然有啊。要学以致用,接下来就给大家献上我的方法。小白的话可以直接看 第3个—小白福利

1 准备工作

当然干这种事并不是那么简单的,还要做准备工作。记得我之前也写过一个爬虫,但是用我之前写得爬虫去爬取百度文库,所得非所见,就是我用爬虫拿到的网页代码跟我看到的网页内容是有所不一样的,这是因为该网页需要动态爬取,那么就的用到selenium模块,当然爬取下来的网页代码非常长,而且你需要的文本内容在人家代码里,也不好复制。我们在需要一个BeautifulSoup模块来简化提取网页内容。

1.1 安装相关库

关于安装selenium和BeautifulSoup这两个库我不想多讲。命令符输入pip install Beautifulsoup4等待安装完成后输入pip install selenium等待安装完成即可。
在这里插入图片描述

1.2 安装Chrome以及驱动

在这个方面我踩了好多坑,所以有必要提醒一下,安装chrome驱动时,一定要安装同版本的驱动这里我提供一个75.0377.90版本的chrome浏览器和75.0377.90的chromedriver浏览器驱动,大家下载后一定要记得安装chrome,驱动不用安装但要记得驱动的文件位置。
点击下载chrome浏览器 ,提取码:nw0i

点击下载浏览器驱动,提取码:hbfd

2 代码实现

接下来我就爬取一个百度文库付费文档来实战一下https://wenku.baidu.com/view/0ed77137814d2b160b4e767f5acfa1c7ab008239.html。点击进入查看
首先看看这个网页
在这里插入图片描述

代码实现

from bs4 import  BeautifulSoup
from selenium import webdriver
import time
# 定义一个爬虫函数
def get_content():

    # chrome驱动器的安装目录
    chrome_driver = 'D:\QLDownload\chromedriver.exe'
    # chrome浏览器的用户代理
    user_agent = '"User-Agent":Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
    # 需要爬取网页的网址
    url = 'https://wenku.baidu.com/view/0ed77137814d2b160b4e767f5acfa1c7ab008239.html'
    # 需要爬取的页数
    page = 1

    options = webdriver.ChromeOptions()
    options.add_argument(user_agent)
    driver = webdriver.Chrome(chrome_driver)
    driver.get(url)
    driver.encoding ='gbk'
    scroll_add_crowd_button = driver.find_element_by_css_selector(  '#html-reader-go-more > div.banner-core-wrap.super-vip > div.doc-banner-text')
    driver.execute_script("arguments[0].scrollIntoView();", scroll_add_crowd_button)
    # 使用selenium的点击,等待加载
    try:
        driver.find_element_by_css_selector('div.continue-to-read > div.banner-more-btn > span').click()
    except Exception as e:
        print(str(e))
    # 循环滚动滚动条到下一页,每一次滚动都把html加到string类型的html中
    for i in range(page):
        driver.execute_script("window.scrollBy(0, 1050)")
        html = driver.page_source
    bf = BeautifulSoup(html)
    print(bf.get_text())
if __name__ == '__main__':
    get_content()

执行结果
在这里插入图片描述

其实运行下来还是一串代码,但在代码里有已经提取好的我们需要的内容,我们只需找找就可以了。可能有人问为什么不用正则表达式提取呢?因为每个网页的内容可能不一样而正则表达式太具有局限性,他只能针对某一类网站专门去匹配,但我做的是所有网站的文本内容的匹配,这就需要我们去在代码中找我们需要的内容.

3 小白福利

到这就结束了吗?不可能,因为上述方法是针对会python的人,不会python的朋友怎么办?接下来就给大家送福利了,我已经将代码打包成可执行exe文件并配有可操作的ui界面。注意! 注意! 注意! 安装chrome及驱动这一步骤必须做。

3.1 送上我写exe

接下来就是下载点击下载PYreptile
下载解压完打开后先安装chrome,如果已经有chrome可以直接下载你的chrome驱动器用,或者用我提供的chrome和驱动器。建议大家用我提供的因为自己配可能不太好配,毕竟我也踩过很多坑。

解压完打开后是这样
在这里插入图片描述

我们先拿一个百度文库为例
例:https://wenku.baidu.com/view/a605b2243a3567ec102de2bd960590c69ec3d896.html点击查看
这是随机的一个大学生社会实践心得

第一步:我们打开爬虫exe
在这里插入图片描述
第二步查看页数
在这里插入图片描述
第三步,查看驱动位置
在这里插入图片描述
所以我的最后的目录是:C:\Users\DELL\Desktop\reptile\chromedriver.exe.
最终填写结果
在这里插入图片描述

最后点击开始爬取,程序会自动打开chrome,并自动关闭chrome,整个爬取过程全自动,最后会将结果保存为word文档。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

总觉得这个做法有点不妥是不是侵权了,上位机写得也比较匆忙,也没怎么美化,后续我在慢慢优化吧。目前先将就着用。想要上位机全部代码可以私聊我。上位机是用pyqt5写的,里面涉及的知识点是用selenium驱动chrome爬取内容,再利用BeautifulSoup简化提取代码,最后将代码保存为word.docx文档。其中可能有你需要的知识点。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章