说明
1.本程序使用python爬虫构建。从Baidu文库的网页代码中找到、整合文字,并保存在“artical/text.docx”。
2.本程序暂不支持获取内含图片的百度文库文章。(持续更新)
3.本程序仅供个人学习使用,切勿商用。
设计思路
1.查看百度文库网页代码
使用python爬虫获取某一百度文库文章的网页代码(如下)。
import requests
import re
from bs4 import BeautifulSoup
class wenku:
def __init__(self, url):
super().__init__()
self.url = url
self.doc = ''
self.header = {'User-Agent': 'Googlebot'}
def get_Doc(self):
soup = BeautifulSoup(self.response.text, features = 'lxml')
text = soup.find_all('div', {'class':'doc-reader'})
print(text[0].get_text())
if __name__ == '__main__':
html = wenku('https://wenku.baidu.com/view/b2072721ccbff121dd3683a2.html')
html.get_HTML()
可以看到,所有的文章主体部分都包含在一个div标签中。
2.通过BeautifulSoup将文字部分匹配出来
在wenku类中添加如下代码。
def get_Doc(self):
soup = BeautifulSoup(self.response.text, features = 'lxml')
text = soup.find_all('div', {'class':'doc-reader'})
print(text[0].get_text())
调用get_Doc()函数。
html.get_Doc()
3.使用python_docx库写入word文档
1.定义新类
class write_doc:
def __init__(self):
super().__init__()
def write(self, doc):
document = Document()
document.styles["Normal"].font.name = u'宋体'
document.styles["Normal"].font.size = Pt(14)
document.styles["Normal"]._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
paragraph = document.add_paragraph()
paragraph.add_run(doc)
document.save('text.docx')
2.修改类与函数的调用
if __name__ == '__main__':
html = wenku('https://wenku.baidu.com/view/b2072721ccbff121dd3683a2.html')
artical = write_doc()
try:
html.get_HTML()
if html.response.status_code == 200:
# html.get_Doc()
artical.write(html.get_Doc())
print('Finished!')
else:
print('Status Code is not 200!')
except:
print('Write Error!')
4.获取的结果
代码下载
如需下载所有代码,请移步我的GitHub。
其中可以下载已打包好的exe版本直接运行。