爬取目标

网址:百度文库

工具使用

开发工具:pycharm
开发环境:python3.7, Windows10
使用工具包:requests,re

重点学习内容

  • 获取网址数据

  • 正则提取数据

  • 保存文本数据

项目思路解析

找到自己需要的文库资料
这篇文章主要介绍的如何处理复制限制的问题

在做一个爬虫项目之前首先要知道数据的来源,以及数据的加载方式
当前网页数据为加载得到的数据
需要通过抓包的方式提取对应数据
打卡抓包工具进行数据找寻

数据来自一个json文件保存的数据采c字段里面
找到目标数据之后在找寻数据资源地址的加载方式
要知道数据是从哪里加载过来的

通过搜索关键字的方式找到数据的来源
通过搜索到数据其实是前端页面自带的
加载之后的数据
需要从文章页面提取出所有的数据下载地址

对文章首页发送网络请求
通过正则的方式提取出所有的数据下载地址

def get_url(self):        url = "https://wenku.baidu.com/view/d19a6bf4876fb84ae45c3b3567ec102de3bddf82.html"        headers = {            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',            'Accept-Encoding': 'gzip, deflate, br',            'Accept-Language': 'zh-CN,zh;q=0.9',            'Cache-Control': 'max-age=0',            'Connection': 'keep-alive',            'Host': 'wenku.baidu.com',            'Sec-Fetch-Dest': 'document',            'Sec-Fetch-Mode': 'navigate',            'Sec-Fetch-Site': 'same-origin',            'Sec-Fetch-User': '?1',            'Upgrade-Insecure-Requests': '1',            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'        }        response = self.session.get(url=url,headers=headers)
        json_data = re.findall('"json":(.*?}])', response.text)[0]        json_data = json.loads(json_data)        # print(json_data)        for index, page_load_urls in enumerate(json_data):            # print(page_load_urls)            page_load_url = page_load_urls['pageLoadUrl']            # print(index)            self.get_data(index, page_load_url)

需要取出对应数据的下标,以及所有的文章数据来源地址
再次对文章片段数据发送请求
获取到对应json数据
通过正则的方式先将wenku_1里的json数据全部取出来
在取出body下面所以的列表
在取出所以的C键对应的值

格式可自行调整
最后将数据进行保存

简易源码分享

import requestsimport reimport json
class WenKu():    def __init__(self):        self.session = requests.Session()
    def get_url(self):        url = "https://wenku.baidu.com/view/23de0cea793e0912a21614791711cc7930b778d4.html"        headers = {            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',            'Accept-Encoding': 'gzip, deflate, br',            'Accept-Language': 'zh-CN,zh;q=0.9',            'Cache-Control': 'max-age=0',            'Connection': 'keep-alive',            'Host': 'wenku.baidu.com',            'Sec-Fetch-Dest': 'document',            'Sec-Fetch-Mode': 'navigate',            'Sec-Fetch-Site': 'same-origin',            'Sec-Fetch-User': '?1',            'Upgrade-Insecure-Requests': '1',            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'        }        response = self.session.get(url=url,headers=headers)
        json_data = re.findall('"json":(.*?}])', response.text)[0]        json_data = json.loads(json_data)        # print(json_data)        for index, page_load_urls in enumerate(json_data):            # print(page_load_urls)            page_load_url = page_load_urls['pageLoadUrl']            # print(index)            self.get_data(index, page_load_url)
    def get_data(self, index, url):        headers = {            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',            'Accept-Encoding': 'gzip, deflate, br',            'Accept-Language': 'zh-CN,zh;q=0.9',            'Cache-Control': 'max-age=0',            'Connection': 'keep-alive',            'Host': 'wkbjcloudbos.bdimg.com',            'Sec-Fetch-Dest': 'document',            'Sec-Fetch-Mode': 'navigate',            'Sec-Fetch-Site': 'none',            'Sec-Fetch-User': '?1',            'Upgrade-Insecure-Requests': '1',            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'        }        response = self.session.get(url=url,headers=headers)        # print(response.content.decode('unicode_escape'))        data = response.content.decode('unicode_escape')        comand = 'wenku_' + str(index+1)        json_data = re.findall(comand + "\((.*?}})\)", data)[0]        # print(json_data)        json_data = json.loads(json_data)        result = []        for i in json_data['body']:            data = i["c"]            # print(data)            result.append(data)
        print(''.join(result).replace('   ', '\n'))        with open('疫情防控.txt', 'a', encoding='utf-8')as f:            f.write(''.join(result).replace("   ", '\n'))
if __name__ == '__main__':    wk = WenKu()    wk.get_url()

Python爬虫实现突破百度文库限制相关推荐

  1. python 爬虫——爬取百度文库VIP内容

    转载自:爬取百度文库 代码实现 import requests import re import json import ossession = requests.session()def fetch ...

  2. python爬虫爬取百度文库txt以及ppt资料

    使用bs4,requests,re库完成对百度文库部分格式文件的爬取 案例中的目标文档地址: https://wenku.baidu.com/view/cbb4af8b783e0912a3162a89 ...

  3. python爬虫爬取百度文档

    使用python爬虫爬取百度文档文字 话不多说,直接上代码! import requests import reheaders = {"User-Agent": "Moz ...

  4. 自从学会Python后,无视百度文库VIP,所有文档免费下载阅读

    最近要用到百度文库查资料,但是很多都需要付费VIP或者下载券,还不能复制,就有点苦逼! 还好小编会Python,在Python面前真的所有VIP都是小意思,啥视频网站,资料网站等等,统统无视收费机制! ...

  5. python爬虫代码实例-Python爬虫爬取百度搜索内容代码实例

    这篇文章主要介绍了Python爬虫爬取百度搜索内容代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 搜索引擎用的很频繁,现在利用Python爬 ...

  6. python爬虫抓取百度图片_Python爬虫抓取百度的高清摄影图片

    成果预览: 源代码: import requests import re url = 'https://image.baidu.com/search/index' headers = { 'User- ...

  7. python爬虫爬取百度贴吧图片,requests方法

    每天一点点,记录学习 近期爬虫项目,看完请点赞哦---: 1:python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载 2:python爬虫爬取百度贴吧图片,requests方 ...

  8. python实例100例百度文库-18个Python爬虫实战案例(已开源)

    目录 爬虫小工具 文件下载小助手 爬虫实战 笔趣看小说下载 VIP视频下载 百度文库文章下载_rev1 百度文库文章下载_rev2 <帅啊>网帅哥图片下载 构建代理IP池 <火影忍者 ...

  9. [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒

    前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(I ...

  10. 【Python爬虫教学】百度篇·手把手教你抓取百度搜索关键词后的页面源代码

    [开门见山] 最近整理了下之前做过的项目,学的东西不少,乱七八糟.打算写点关于 Python 爬虫的东西,新人一枚,还望大佬们多多担待,别把我头给打歪了. 前面我先磨叽磨叽些基础的东西,对爬虫新人友好 ...

最新文章

  1. MATLAB神经网络样本数量太大,MATLAB搭建bp神经网络的误差特别大,但R2的值也大,求解帮我看看我的网络哪里出问题了...
  2. 两个时间计算毫秒在线_SPL 的日期时间函数(下)
  3. MyBatis 物理分页
  4. python easy install_Python 安装easy_install详解
  5. Redis java API ——Jedis的使用
  6. 设计模式----2(简单工厂模式的概念,简单工厂模式的实现,简单工厂模式的优缺点)
  7. Python dict() 函数
  8. PMP读书笔记(第4章)
  9. NumPy 基础知识·翻译完成
  10. 华为定义5.5G网络;阿里巴巴美股投资者发起集体诉讼;Kaldi核心算法K2 0.1版本发布|极客头条
  11. Redis入门官方文档
  12. 【微软雅黑字体的简单介绍】
  13. 在淘宝里,他们总结的一些前端Tips
  14. 戴尔服务器bios设置u盘启动不了系统,戴尔电脑主板bios设置u盘启动不了怎么办...
  15. 测光--摄影基础理论(2)
  16. 使用requests爬取电影天堂数据,用lxml和Xpath
  17. vue项目中Echarts两个图表之间连接两条线
  18. IFR202型红外雨量传感器非接触式检测降雨量的传感器
  19. php解析其他php文件_PHP Include 文件
  20. 如何合理布局浏览器网页!

热门文章

  1. java摇号抽奖程序_HTML5教程之年终摇号抽奖小程序
  2. visio软件接口流程图_绘制流程图——Visio可以让你事半功倍哦!
  3. iai控制器服务器ON信号,IAI控制器型号说明的.pdf
  4. Quant量化面试题 数学 逻辑题 过河、生日、烧绳、称重
  5. 服务器dell安装黑苹果系统,Dell D630安装10.8黑苹果全套驱动
  6. 讲解【分布式事务】的一篇良心之作!
  7. 关于主数据管理及病人主索引的说明
  8. SpringBoot大学毕业生就业信息管理系统
  9. 贴片电容造成短路烧毁的原因分析
  10. iOS端抓包工具-stream