Python百度文库爬虫之doc文件

说明:此文件是在爬取txt文件下的基础进行的,因此重复内容会一笔带过,不懂请看前面爬取txt文件链接

对于文件的所有类型,我都会用一篇文章进行说明,链接:

  1. Python百度文库爬虫之txt文件
  2. Python百度文库爬虫之doc文件
  3. Python百度文库爬虫之pdf文件
  4. Python百度文库爬虫之ppt文件
  5. [Python百度文库爬虫之xls文件
  6. Python百度文件爬虫终极版

一.网页分析

doc文件相对于txt文件来说,链接相对简单

以文件链接:https://wenku.baidu.com/view/0ee9fbc585868762caaedd3383c4bb4cf7ecb78f.html?fr=search

from IPython.display import Image
Image("./Images/doc_0.png",width="600px",height="400px")

分析网页得到,网页的数据链接为:

Image("./Images/doc_1.png",width="600px",height="400px")

现在我们就是要查找这些数据链接的URL,分析得到这些url在文件url源代码中:

Image("./Images/doc_2.png",width="600px",height="400px")

现在我们通过正则表达式来获取数据URL:
关于正则表达式的学习:链接

import requests
import json
import re
import jsonsession=requests.session()url=input("请输入下载的文件URL地址:")content=session.get(url).content.decode('gbk')
doc_id=re.findall('view/(.*?).html',url)[0]
types=re.findall(r"docType.*?:.*?'(.*?)'",content)[0]
title=re.findall(r"title.*?:.*?'(.*?)'",content)[0]
请输入下载的文件URL地址: https://wenku.baidu.com/view/0ee9fbc585868762caaedd3383c4bb4cf7ecb78f.html?fr=search
doc_id
'0ee9fbc585868762caaedd3383c4bb4cf7ecb78f'
types
'doc'
title
'爬虫技术是什么'

二.数据URL获取

接下来是最关键数据URL获取,只有正确获取URL,才能采集数据

url_list=re.findall(r'(https.*?0.json.*?)\\x22}',content)
url_list=[addr.replace("\\\\\\/","/") for addr in url_list]
result=""for url in set(url_list):content=session.get(url).content.decode('gbk')y=0txtlists=re.findall(r'"c":"(.*?)".*?"y":(.*?),',content)for item in txtlists:# 当item[1]的值与前面不同时,代表要换行了if not y==item[1]:y=item[1]n='\n'else:n=''result+=nresult+=item[0].encode('utf-8').decode('unicode_escape','ignore')
E:\Anaconda\envs\mypython\lib\site-packages\ipykernel_launcher.py:15: DeprecationWarning: invalid escape sequence '\/'from ipykernel import kernelapp as app
result=result.replace("\\","")
filename="./Files/"+title+'.docx'with open(filename,'w',encoding="utf-8") as f:f.write(result)f.close()
Image("./Images/doc_3.png",width="600px",height="400px")

四.函数编程

1.功能进一步完善

提供可以下载[‘txt’,‘doc’]类型的文件

import requests
import json
import re
import ossession=requests.session()path="F:\\桌面\\Files"if not os.path.exists(path):os.mkdir(path)def parse_txt1(code,doc_id):content_url='https://wenku.baidu.com/api/doc/getdocinfo?callback=cb&doc_id='+doc_idcontent=session.get(content_url).content.decode(code)md5sum=re.findall('"md5sum":"(.*?)",',content)[0]rsign=re.findall('"rsign":"(.*?)"',content)[0]pn=re.findall('"totalPageNum":"(.*?)"',content)[0]content_url='https://wkretype.bdimg.com/retype/text/'+doc_id+'?rn='+pn+'&type=txt'+md5sum+'&rsign='+rsigncontent=json.loads(session.get(content_url).content.decode('gbk'))result=''for item in content:for i in item['parags']:result+=i['c']return resultdef parse_txt2(content,code,doc_id):md5sum=re.findall('"md5sum":"(.*?)",',content)[0]rsign=re.findall('"rsign":"(.*?)"',content)[0]pn=re.findall('"show_page":"(.*?)"',content)[0]content_url='https://wkretype.bdimg.com/retype/text/'+doc_id+'?rn='+pn+'&type=txt'+md5sum+'&rsign='+rsigncontent=json.loads(session.get(content_url).content.decode('utf-8'))result=''for item in content:for i in item['parags']:result+=i['c']return resultdef parse_doc(content):url_list=re.findall(r'(https.*?0.json.*?)\\x22}',content)url_list=[addr.replace("\\\\\\/","/") for addr in url_list]result=""for url in set(url_list):content=session.get(url).content.decode('gbk')y=0txtlists=re.findall(r'"c":"(.*?)".*?"y":(.*?),',content)for item in txtlists:# 当item[1]的值与前面不同时,代表要换行了if not y==item[1]:y=item[1]n='\n'else:n=''result+=nresult+=item[0].encode('utf-8').decode('unicode_escape','ignore')return resultdef save_file(title,filename,content):with open(filename,'w',encoding='utf-8') as f:f.write(content)print("文件"+title+"保存成功")f.close()def main():print("欢迎来到百度文库文件下载:")print("-----------------------\r\n")while True:try:print("1.doc \n 2.txt \n 3.ppt \n 4.xls\n 5.ppt\n")types=input("请输入需要下载文件的格式(0退出):")if types=="0":breakif types not in ['txt','doc']:print("抱歉功能尚未开发")continueurl=input("请输入下载的文库URL地址:")# 网页内容response=session.get(url)code=re.findall('charset=(.*?)"',response.text)[0]if code.lower()!='utf-8':code='gbk'content=response.content.decode(code)# 文件iddoc_id=re.findall('view/(.*?).html',url)[0]# 文件类型#types=re.findall(r"docType.*?:.*?'(.*?)'",content)[0]# 文件主题#title=re.findall(r"title.*?:.*?'(.*?)'",content)[0]if types=='txt':md5sum=re.findall('"md5sum":"(.*?)",',content)if md5sum!=[]:result=parse_txt2(content,code,doc_id)title=re.findall(r'<title>(.*?). ',content)[0]#filename=os.getcwd()+"\\Files\\"+title+'.txt'filename=path+"\\"+title+".txt"save_file(title,filename,result)else: result=parse_txt1(code,doc_id)title=re.findall(r"title.*?:.*?'(.*?)'",content)[0]#filename=os.getcwd()+"\\Files\\"+title+'.txt'filename=path+"\\"+title+".txt"save_file(title,filename,result)elif types=='doc':title=re.findall(r"title.*?:.*?'(.*?)'",content)[0]result=parse_doc(content)filename=path+"\\"+title+".doc"save_file(title,filename,result)except Exception as e:print(e)if __name__=='__main__':main()
欢迎来到百度文库文件下载:
-----------------------1.doc 2.txt 3.ppt 4.xls5.ppt请输入需要下载文件的格式(0退出): txt
请输入下载的文库URL地址: https://wenku.baidu.com/view/9d0ed76fae45b307e87101f69e3143323968f5e4.html?fr=search文件c语言编写网络爬虫保存成功
1.doc 2.txt 3.ppt 4.xls5.ppt请输入需要下载文件的格式(0退出): doc
请输入下载的文库URL地址: https://wenku.baidu.com/view/0ee9fbc585868762caaedd3383c4bb4cf7ecb78f.html?fr=searchE:\Anaconda\envs\mypython\lib\site-packages\ipykernel_launcher.py:69: DeprecationWarning: invalid escape sequence '\/'文件爬虫技术是什么保存成功
1.doc 2.txt 3.ppt 4.xls5.ppt请输入需要下载文件的格式(0退出): doc
请输入下载的文库URL地址: https://wenku.baidu.com/view/f6ae76c8bf1e650e52ea551810a6f524cdbfcb64.html?fr=search文件保存成功
1.doc 2.txt 3.ppt 4.xls5.ppt请输入需要下载文件的格式(0退出): 0

由于上传限制,演示过程链接:

https://www.yuque.com/lq6h/yil9xt/nlzoaq

Image("./Images/doc_5.png",width="600px",height="400px")

五.pyinstaller打包

这次添加了下载doc文件的功能,本次就不打包了。基本功能与下载txt相似,等能下载全部文件之后再进行打包

Python百度文库爬虫之doc文件相关推荐

  1. python爬取百度文库doc_Python百度文库爬虫之doc文件

    Python百度文库爬虫之doc文件 说明:此文件是在爬取txt文件下的基础进行的,因此重复内容会一笔带过,不懂请看前面爬取txt文件链接 对于文件的所有类型,我都会用一篇文章进行说明,链接: 一.网 ...

  2. Python百度文库爬虫之txt文件

    Python百度文库爬虫之txt文件 说明: 对于文件的所有类型,我都会用一篇文章进行说明,链接: Python百度文库爬虫之txt文件 Python百度文库爬虫之doc文件 Python百度文库爬虫 ...

  3. python 百度文库 签到_Python百度文库爬虫终极版

    百度文库爬虫 我们在开始爬虫之前,首先要了解网页的信息和结构,然后获取请求的url和参数(payloads)来得到所要的数据并处理.接下来我们根据: 一.网页分析 二.爬虫编写 三.运行与结果 四.程 ...

  4. 【转】asp仿百度文库、豆丁doc转换(flashpaper)

    [转]asp仿百度文库.豆丁doc转换(flashpaper)     asp仿百度文库.豆丁doc转换(flashpaper)环境: flashpaper2.2版 win2008 IIS7 步骤: ...

  5. python爬去百度文库资料_Python在线百度文库爬虫(免下载券)

    百度文库,文字类型的资源(如txt, doc, pdf),是可以在前端源码分析获取到的,如果能按照规则合理的提取这些文字资源,就可以实现免下载券获取资源. 作者完成了百度文库的在线版爬虫,只需提供文库 ...

  6. 《脚本》Python在线百度文库爬虫(免下载券)

    百度文库,文字类型的资源(如txt, doc, pdf),是可以在前端源码分析获取到的,如果能按照规则合理的提取这些文字资源,就可以实现免下载券获取资源. 作者完成了百度文库的在线版爬虫,只需提供文库 ...

  7. python百度文库免费_Python在线百度文库爬虫(免下载券)

    百度文库,文字类型的资源(如txt, doc, pdf),是可以在前端源码分析获取到的,如果能按照规则合理的提取这些文字资源,就可以实现免下载券获取资源. 作者完成了百度文库的在线版爬虫,只需提供文库 ...

  8. python 百度百科 爬虫_爬虫爬取百度百科数据

    以前段时间<青春有你2>为例,我们使用Python来爬取百度百科中<青春有你2>所有参赛选手的信息. 什么是爬虫? 为了获取大量的互联网数据,我们自然想到使用爬虫代替我们完成这 ...

  9. python 百度百科 爬虫_python简单爬虫

    爬虫真是一件有意思的事儿啊,之前写过爬虫,用的是urllib2.BeautifulSoup实现简单爬虫,scrapy也有实现过.最近想更好的学习爬虫,那么就尽可能的做记录吧.这篇博客就我今天的一个学习 ...

  10. python百度翻译爬虫_Python爬虫教程-05-python爬虫实现百度翻译

    使用python爬虫实现百度翻译功能 python爬虫实现百度翻译: python解释器[模拟浏览器],发送[post请求],传入待[翻译的内容]作为参数,获取[百度翻译的结果] 通过开发者工具,获取 ...

最新文章

  1. 最完的htaccess文件用法收集整理
  2. HTML(三):表单元素
  3. spring boot actuator服务监控与管理
  4. substringToIndex substringFromIndex
  5. [Cocoa]深入浅出Cocoa之Core Data(2)- 手动编写代码
  6. 福州3 2五年制计算机专业的学校,福州有哪些五年制大专
  7. OJ1004: 三位数的数位分离
  8. 自定义View/ViewGroup的步骤和实现
  9. ubuntu20.05安装vmware workstation 16,踩坑:GLib does not have GSettings support.
  10. 屏蔽 已阅读59% 前往新浪新闻查看全文
  11. MySQL 命令无效问题
  12. 【转载】Typora标题增加序号
  13. 小米2A com.android.phone,104.android 简单的检查小米手机系统和华为手机系统是否打开通话自动录音功能,跳转通话录音页面...
  14. Python与GIS
  15. 【githubshare】深度学习蘑菇书,覆盖了强化学习、马尔可夫决策过程、策略梯度、模仿学习
  16. c语言中v作用是什么意思,C语言里,\v是什么意思?
  17. 外仁内圣,以借得天下,以情御英雄
  18. ARP代理(Proxy ARP)
  19. 乌江榨菜再涨价,“榨茅”是如何炼成的?
  20. [JVM]了断局: Class文件结构梳理

热门文章

  1. 关于MOSFET驱动电阻的选择
  2. 计算机简历中的附加信息怎么填,善用简历附加信息体现你的好
  3. 成都博兰科技有限公司助宝兰网进入云贵川渝市场 www.beylai.com
  4. 网站漏洞修复之苹果cms电影系统
  5. 兴业银行java面试_【面经】兴业银行信息技术岗面试
  6. 英语词根学习笔记(前六章)——《英语词根与单词的说文解字》李平武
  7. Win10如何删除输入法(删除默认输入法)
  8. 电脑壁纸软件(Bing Wallpaper)
  9. nodejs websocket 聊天应用
  10. 深圳大学计算机与科学考研科目,2020深圳大学计算机专业课不考408了