with open('test.txt', encoding='utf-8') as f:docu = Document()docu.add_paragraph(f.read())docu.save('test.docx')
文章插图
PPT、PDF 爬取与保存
文章插图
有了之前的经验教训 , 在爬取的时候我们首先就尝试了使用爬取 TXT、DOCX 的方法 , 尝试是否可以爬到内容
url = 'https://wenku.baidu.com/view/a4ac1b57dd88d0d232d46a0f.html?fr=search'header = {'User-agent': 'Googlebot'}res = requests.get(url , headers = header)res.text
很可惜的是 , 我们并没有访问到原因仔细想想也很简单 , 在百度搜索的时候 , 直接搜索是搜不到 PPT 或者 PDF 的内容的
文章插图
那么很显然 , PPT 和 PDF 是通过异步的方法进行内容加载的
对待异步加载的数据 , 我们通常采取的策略有两种
1、第一个就是直接找到发起异步请求的接口 , 自己构造请求头 , 发起请求
2、第二个就是通过 Selenium 这样的自动化测试工具去爬取
文章插图
百度文库的接口太难找了 , 请求头的构造也很麻烦 , 找了很久也没有很满意 。
所以在本次爬取中 , 我们使用的是第二种方法 , 使用 Selenium 这样的自动化测试工具
文章插图
这里我们需要下载 ChromeDriver 这个插件 , 当然这里是默认大家使用的是 Chrome 浏览器 , 如果是其他的浏览器 , firefox , safari 等等 , 直接去网上找到相应 Driver 就可以了 。
这里给出 ChromeDriver 的下载地址
http://npm.taobao.org/mirrors/chromedriver/
大家一定要下载和自己 Chrome 浏览器版本一致的 ChromeDriver , 不然程序是运行会报错
文章插图
我们先不急着马上开始爬取 , 我们先来尝试使用一下Selenium调用ChromeDriver
import requestsfrom selenium import webdriverurl = 'https://wenku.baidu.com/view/5292b2bc0166f5335a8102d276a20029bd64638c.html?fr=search'driver = webdriver.Chrome(r'F:driverchromedriver.exe')driver.get(url)
怎么样 , 是不是浏览器自动打开了? 现在我们尝试输出这个 driver , 就可以看见 , 网页的正确源代码已经在里面了现在我们仔细研究一下源代码就可以看到 , 我们需要的内容在下面这个位置
文章插图
现在正确的源代码也有了 , 内容的位置也知道了 , 直接解析 , 爬取 , 完事就好了 。
文章插图
想得美 , 经过这样的爬取之后 , 对内容进行解析 , 让我们看看究竟爬到没有
文章插图
from lxml import etreeimport rehtml=etree.HTML(driver.page_source)links=html.xpath("//div[@class='reader-pic-item']/@style")part = re.compile(r'url[(](.*?)[)]')qa="".join(links)z=part.findall(qa)z
文章插图
我们可以知道 , 其实我们只爬到 3 张 PDF , 其他的都没有爬到 。
这是为什么呢?
这是百度文库为了防止大家去爬 , 专门设置的一个小机关
文章插图
【教你用 Python 爬取 Baidu 文库全格式文档】
返回百度文库 , 我们仔细看看源代码 , 其实我们可以发现 , 随着页面的变化 , 源代码是不断改变的 , 每次都只有 3 张图片的 url 。
并且这个页码数也有一定的规律 , 如果在第二页 , 那么图片就是 1 , 2 , 3 , 如果在第三页 , 图片就是 2 , 3 , 4
推荐阅读
- Python量化工具之“k线波幅加速”算法跟踪止盈,仅需一行代码
- 禅茶佛教中的茶文化,佛教与茶参禅悟道
- 怎样做淘宝客在淘宝上拿佣金 怎么开通淘宝客赚佣金教程
- 茶与健康知识,茶与天主教的联系
- Python的安装
- 教育部双减政策是什么?
- 教师资格证什么时候出成绩?
- 建立成功的 Python 环境的 4 个基本工具
- centos7安装python3.7.8和pip3
- Python全栈之Flask 简介