Day 1
http协议
 - 概念:就是服务器和客户端进行数据交互的一种形式
常用的请求头信息
- User-Agent: 请求载体的身份标识
- Connection: 请求完毕后是断开连接还是保持连接
常有的响应头信息
 -Content-Type: 服务器响应回客户端的数据类型
https协议
- 安全的超文本传输协议,(传输数据时有加密)

加密方式
 - 对称密匙加密(弊端:传输时很有可能被第三方机构拦截密匙和数据)
 - 非对称  (服务器发送公钥给客户端,服务器自己有私钥解密,缺点 1.效率低, 2.第三方拦截公钥再发送给客户端)
 - 证书密匙加密 (https)(证书机构给公钥认证,再发给客户端)

模块
- urllib模块
- requests模块

requests模块:python原生模块,功能强大,效率极高
作用:模拟浏览器发送请求
如何使用:(requests模块编码流程)
- 指定url
- 发起请求
- 获取响应数据
- 持久化存储

局部刷新
- 数据解析(还未学)
- 阿贾克斯请求(ajax请求)(1.百度翻译破解,2.肯德基地址查询,3药监局数据爬取(已改,ajax请求参为随机参数))

注 - 携带参数的url用字典进行封装
    - 进行UA伪装
    - 正则表达式 批量加引号   ( (.*?): (.*) ) (  "$1": "$2",  ) 或者ctrl+alt+shift选取多个光标加引号(第一步crtl+r,选定区域,加入正则表达式 (.*?):(.*),替换为'$1':'$2',,再勾选match case和regex以及in selec,就可以了)
    - 字典参数中键值不能有空格否则得到的是一个空列表
    - 如果相关数据爬取后是乱码,说明是动态数据,可能是ajax数据

Day 2
聚焦爬虫
 -爬取页面中指定信息
  - 正则(看是白月黑羽好吧,难怪我搜不到)(1.百度贴吧图片爬取)
  - bs4(1. 诗词名句网章节内容爬取)
  - xpath(重点)(1.彼岸网图片爬取, 2.全国城市名称爬取, 3.58二手房名称爬取,4,站长简历模板数据爬取)
- 解析的局部内容都会在标签之间或者标签对应的属性中
- 进行指定标签的定位
- 标签或标签对应的属性值进行提取(解析)

编写流程
- 指定url
- 发起请求
- 获取响应数据
--数据解析
- 持久化存储

正则(练习网站 www.regex101.com)(其他语言通用)
<img class="j_retract" id="big_img_1657684197790" src="https://tiebapic.baidu.com/forum/w%3D580%3B/sign=2e1951bed1eef01f4d1418cdd0c59b25/d0c8a786c9177f3efd9f14d735cf3bc79e3d5645.jpg?tbpicau=2022-07-15-05_d48bd1d372e3a28f8f37a8833a15b913" οnerrοr="this.src='//tb2.bdstatic.com/tb/static-frs/img/v2/picerr.gif';this.width=82;this.height=75;" style="visibility: visible;">

<img class="j_retract" id="big_img_1657684212486" src="https://tiebapic.baidu.com/forum/w%3D580%3B/sign=42488887c035e5dd902ca5d746fda5ef/18d8bc3eb13533fa8f01fbfbedd3fd1f40345bab.jpg?tbpicau=2022-07-15-05_5f558bfc9cce1c50b71d4c7a58e5f4f9" οnerrοr="this.src='//tb2.bdstatic.com/tb/static-frs/img/v2/picerr.gif';this.width=82;this.height=75;" style="visibility: visible;">

<img class="BDE_Image" src="http://tiebapic.baidu.com/forum/w%3D580/sign=7bc54b6a20380cd7e61ea2e59146ad14/f721073b5bb5c9eade75b7399039b60038f3b3a5.jpg?tbpicau=2022-07-15-05_44a1f783c37d6a5b6429bb3ae92ce87c" size="26452" width="481" height="515">
<img class="BDE_Image" src="http://tiebapic.baidu.com/forum/w%3D580/sign=0bcf67fbd5ef76c6d0d2fb23ad17fdf6/6f152adda3cc7cd9630281037c01213fb90e917c.jpg?tbpicau=2022-07-15-05_bae18f8b502e6a7c03878334cc5a1d3b" size="177981" changedsize="true" width="560" height="315">
<img class="j_retract" id="big_img_1657685458288" src="https://tiebapic.baidu.com/forum/w%3D580%3B/sign=2e1951bed1eef01f4d1418cdd0c59b25/d0c8a786c9177f3efd9f14d735cf3bc79e3d5645.jpg?tbpicau=2022-07-15-05_d48bd1d372e3a28f8f37a8833a15b913" οnerrοr="this.src='//tb2.bdstatic.com/tb/static-frs/img/v2/picerr.gif';this.width=82;this.height=75;" style="visibility: visible;">

<a rel="noopener" class="thumbnail vpic_wrap"><img src="https://tb3.bdstatic.com/public/img/icon_pc_picheader_n.432946a7.png" attr="89125" data-original="https://tiebapic.baidu.com/forum/wh%3D90%2C167%3Bcrop%3D0%2C0%2C90%2C90/sign=afe031c7912a283443f33e026b99f8dc/0ad162d9f2d3572cde66bd06cf13632763d0c360.jpg?tbpicau=2022-07-15-05_df7aa5c86193c984580b47f56694e81d" bpic="https://tiebapic.baidu.com/forum/pic/item/0ad162d9f2d3572cde66bd06cf13632763d0c360.jpg?tbpicau=2022-07-15-05_8f9916d75575abc209f080c6d2a60ff8" class="threadlist_pic j_m_pic "></a>
<a rel="noopener" class="thumbnail vpic_wrap"><img src="https://tb3.bdstatic.com/public/img/icon_pc_picheader_n.432946a7.png" attr="76483" data-original="https://tiebapic.baidu.com/forum/wh%3D90%2C105%3Bcrop%3D0%2C0%2C90%2C90/sign=a88b726c8c177f3e1061f40440e30af7/fdfaaf51f3deb48ff5174104b51f3a292cf578ea.jpg?tbpicau=2022-07-15-05_0fc6e70fca396dd57508843faaa25dd6" bpic="https://tiebapic.baidu.com/forum/pic/item/fdfaaf51f3deb48ff5174104b51f3a292cf578ea.jpg?tbpicau=2022-07-15-05_4d109f2cd7fdb9ca2aa21b0efa5fe3fc" class="threadlist_pic j_m_pic "></a>

<img src="https://tb3.bdstatic.com/public/img/icon_pc_picheader_n.432946a7.png" attr="76483" data-original="https://tiebapic.baidu.com/forum/wh%3D90%2C105%3Bcrop%3D0%2C0%2C90%2C90/sign=a88b726c8c177f3e1061f40440e30af7/fdfaaf51f3deb48ff5174104b51f3a292cf578ea.jpg?tbpicau=2022-07-15-05_0fc6e70fca396dd57508843faaa25dd6" bpic="https://tiebapic.baidu.com/forum/pic/item/fdfaaf51f3deb48ff5174104b51f3a292cf578ea.jpg?tbpicau=2022-07-15-05_4d109f2cd7fdb9ca2aa21b0efa5fe3fc" class="threadlist_pic j_m_pic ">
<img src="https://tb3.bdstatic.com/public/img/icon_pc_picheader_n.432946a7.png" attr="20708" data-original="https://tiebapic.baidu.com/forum/wh%3D90%2C194%3Bcrop%3D0%2C0%2C90%2C90/sign=2a5c48e0754e251fe2a2ecf197aaf82e/17902c34349b033b30dd160050ce36d3d739bdca.jpg?tbpicau=2022-07-15-05_5dfb561e0bfdccd30ccb63a1adf86699" bpic="https://tiebapic.baidu.com/forum/pic/item/17902c34349b033b30dd160050ce36d3d739bdca.jpg?tbpicau=2022-07-15-05_d1d8dd660b66f32f0b6c796822dd54c6" class="threadlist_pic j_m_pic ">
ex = '<img class=.*?" src="(.*?)" οnerrοr=".*?style="visibility: visible;">'

https://file.izuiyou.com/img/view/id/1991059917
<div class="PostBox-main" style="inset: 3px;"><img src="http://tbfile.izuiyou.com/img/view/id/1991059917/sz/540" alt=""></div>
<div class="PostBox-main" style="inset: 3px;"><img src="http://tbfile.izuiyou.com/img/view/id/1991059918/sz/540" alt=""></div>

<div class="PostBox-frame-auto"><img class="" src="http://tbfile.izuiyou.com/img/view/id/1977956108/sz/540" alt=""></div>

<img src="https://tb3.bdstatic.com/public/img/icon_pc_picheader_n.432946a7.png" attr="92821" data-original="https://tiebapic.baidu.com/forum/wh%3D160%2C90/sign=61767e2094c8a786be7f420f5139e504/d2dc72310a55b319afad5caf06a98226cefc17b7.jpg?tbpicau=2022-07-15-05_25704168fa23456b5f3ada60f8f18eae"  bpic="https://tiebapic.baidu.com/forum/pic/item/d2dc72310a55b319afad5caf06a98226cefc17b7.jpg?tbpicau=2022-07-15-05_a898d74d6f44764f86b6890fb7fd9870" class="threadlist_pic j_m_pic "  /></a><div class="threadlist_pic_highlight j_m_pic_light"></div></li></ul>

<img src="https://tb3.bdstatic.com/public/img/icon_pc_picheader_n.432946a7.png" attr="29045" data-original="https://tiebapic.baidu.com/forum/wh%3D90%2C119%3Bcrop%3D0%2C0%2C90%2C90/sign=b0cf1ce9d48fa0ec7f926c0416bb68df/a87d8e35e5dde71142f09d2ce2efce1b9c1661ee.jpg?tbpicau=2022-07-15-05_0f50bbf1fce38533ece4b24333ca7df8"  bpic="https://tiebapic.baidu.com/forum/pic/item/a87d8e35e5dde71142f09d2ce2efce1b9c1661ee.jpg?tbpicau=2022-07-15-05_2c6f71d89538e4609ab6768620ebbc10" class="threadlist_pic j_m_pic "  /></a><div class="threadlist_pic_highlight j_m_pic_light"></div></li></ul>

bs4 
- 实例化一个BeautifulSoup对象,并且将页面源码数据加载到该对象中
- 通过调用BeautifulSoup对象中相关属性或者方法进行标签定位和数据提取

- 对象实例化:
  - 将本地的html文档中的数据加载到该对象中
       fp = open('文件名', 'r', encoding='utf-8')
       soup = BeautifulSoup(fp, lxml)
  - 将互联网上获取的页面源码加载到该对象中
       page_text = response.text
       soup = BeautifulSoup(page_text, 'lxml')
# print(soup)
    # print(soup.a)
    # soup.tagName 返回的是html中第一次出现的tagName标签
    # print(soup.div)
    # print(soup.find('div'))  # 相当于soup.div
    # print(soup.find('div', class_='song'))
    # print(soup.find_all('a'))  # f返回的是所有标签 (列表)
    # print(soup.select('.tang')) # select('id, class, 标签...选择器) '),返回的是一个列表
    # print(soup.select('.tang > ul > li > a')[0]) # 层级选择器 > 表示的是一个层级
    # print(soup.select('.tang > ul  a')[0]) 空格  ‘ ’空格表示多个层级
    # print(soup.select('.tang > ul > li > a')[0].text/string/get_text())
    # text/get_text() : 可以获取某一个标签中的所有文本内容(可以不是直系标签文本内容)
    # print(soup.find('div', class_='song').string)
    # string : 只能获取标签下的直系文本内容
    # print(soup.select('.tang > ul  a')[0]['href']) 获取标签中的属性值

Day 3

乱码可以参考page_text = page_text.content.decode('utf-8')
出现乱码的,分别在12行和24行最后加上‘.encode('ISO-8859-1')’
我也用的笔趣阁,要注意获取相应数据前要编码,用gb18030,否则中文乱码

Xpath(返回的是一个列表)
  - 实例化一个etree的对象,且需要被解析的页面源码数据加载到该对象中。
  - 调用etree对象中的xpath方法结合着xpath表达式实现标签的定位和内容的捕获
- /:表示从根节点开始定位,表示的是一个层级
- //:表示多个层级, (在最左侧时表示从任意位置开始定位)
- 属性定位: //div[@attrName="attrValue"]
- 索引定位: //div[@class = "song"]/p[3] (索引从1开始)
- 取文本 
          - /text()获取的是标签中直系的文本内容
          - //text()获取的是标签中非直系的文本内容(所有的文本内容)
 - 取属性
          -//div[@class="song"]/img/@src  (img/@src)

tree.xpath('//section[@class="list"]//div[@class="property-content-title"]/h3/@title')(58同城二手房名字xpath路径)
推荐一个浏览器插件 XPath Helper ,可以直接获取元素xpath路径
copyxpath


  - 乱码问题用  .encode('iso-8859-1').decode('gbk') 或 encoding = 'utf-8'
//*[@id="main"]/div[3]/ul/li[1]/a/img
//*[@id="container"]/div[1]/a
  - 当编码格式一样是仍然无法解决时,requests请求返回用.content,可以解决中文乱码问题。
  - 抓包工具中的代码可能和网页源码不一样,这时候需要打开网页源码来写xpath

Day 4

验证码识别(超级鹰,python自带库 : ddddorc  , tesseract)
2022/6/13摸索出来了pytesseract登陆古诗文网的方法,详细请看我这一天发的评论

模拟登录编码流程    (1.古诗文网登录(带验证码,以及登录后的页面数据对应的二次页面数据爬取))
   - 验证码的识别,获取验证码图片的文字数据
   - 对post请求进行发送,(处理请求参数)
   - 对响应数据进行持久化存储

注 
   - 使用抓包工具时要勾选 Preserve log ,找到 login
http/https协议特性: 无状态
没有请求到对应的页面数据原因:
      发起的第二次请求基于个人主页页面请求的时候,服务器端并不知道该请求是基于登录状态下的qingq
cookie :用来让服务器端记录客户端的相关状态  (古诗文网是:collect.aspx)
    - 手动处理:通过抓包工具将该值封装到headers中。(不建议)
    - 自动处理: - cookie值是来自哪里?
                       - 模拟登录post请求后,由服务器创建。
                       session会话对象:
                        - 作用:
                                  1 可以进行请求的发送
                                  2 如果请求过程中产生了cookie,则该cookie会被自动村春/携带在该session对象中
                        - 使用session对象进行模拟登录post请求的发送(cookie就会被自动存储在session中)
                        - session对象对个人主页对应的get请求进行发送(携带了cookie)

代理 :破解封ip这种反爬机制
什么是代理 :
      - 代理服务器 (客户端——代理服务器——服务器网站)
代理的作用 :
      - 突破自身ip访问的限制。(访问一些自身ip不能访问的网站)
      - 隐藏自身真实ip
代理ip的类型:
      - http :应用到http协议中
      - https :应用到https协议中
代理相关网站:
      - 快代理
      - 西祠代理(已挂)
      - www.goubanjia.com
http://free-proxy.cz/zh/  有梯子可以上这个网站,里面有很多的国外ip,不过大多数都很慢
芝麻HTTP还行,一开始有赠送20,使用最便宜的那个一次才0.04

代理ip的匿名度 :
      - 透明:服务器知道该次请求使用了代理,也知道请求对应的真实的ip
      - 匿名:知道使用了代理,不知道真实ip
      - 高匿:不知道使用了代理, 更不知道真实的ip
注 
    - 3.7版本以后 代理IP的使用方法为:proxies={'http':'http://代理地址'  https同理}

Day5

异步爬虫 (梨视频网站爬取 (CSDN搜索用户  [ 25 ' h],我已完成,有详细讲解21年7月)
(注;视频对应动态刷新为ajax请求,且可能存在反扒机制(偷换网页连接中的数值),需要从主页面中获取数值id,再发送一个ajax请求,
并且这个ajax请求需要主页面中获取的数值id (携带随机参数的可以用random.random(),来获取)并且,headers中需要加上(Referer : 本页面链接)

方式
          - 多线程,多进程(不建议使用)
             好处:可以为相关阻塞的操作单独开启线程或进程,阻塞操作就可以异步执行
             弊端:无法无限制的开启多线程或多进程 (一个进程可以有多个线程)进程可以看作火车,线程可以看作一节节的车厢,线程不能脱离进程存在,后续还有协程等概念 
          - 进程池,线程池(适当使用)
             好处:可以降低系统对进程或者线程创建和销毁的一个频率。
             弊端:池中线程或者进程的数量是有上限的
             二者的不同之处就是前者应用于线程后者主要应用于进程,而它们实现并行化操作的关键则是map函数。
             弹幕:multprocessing 是进程库,thread才是线程库

https://video.pearvideo.com/mp4/third/20220715/cont-1767555-13186476-154718-hd.mp4
https://video.pearvideo.com/mp4/third/20220715/1657941718345-13186476-154718-hd.mp4

'mrd': str(random.random())
'Referer': 'https://www.pearvideo.com/video_' + id_

https://video.pearvideo.com/mp4/third/20220715/cont-1767518-12033417-100958-hd.mp4
https://video.pearvideo.com/mp4/third/20220715/con-1767518-12033417-100958-hd.mp4

携程 (反复横跳)

- greelet.早期模块
 - yield关键字
 - asyncio装饰器(>=3.4)
 - async, await关键字(推荐)

事件循环
# 生成一个事件循环
loop = asyncio.get_event_loop()  (死循环)

# 将任务放到任务列表
loop.run_until_complete(任务))

完整笔记及代码实现私

15天基础爬虫、selenium、scrapy使用,附全程实现代码相关推荐

  1. 股票交易数据采集+数据可视化(一个朴素无华的Python爬虫+可视化案例,附代全部代码)

    前言 我国股票投资者数量为15975.24万户, 如此多的股民热衷于炒股,首先抛开炒股技术不说, 那么多股票数据是不是非常难找,找到之后是不是看着密密麻麻的数据是不是头都大了? 今天带大家爬取雪球平台 ...

  2. Python爬虫总结——Scrapy+Gerapy部署网络爬虫

    Python爬虫总结--从基础爬虫到Scrapy+Gerapy部署网络爬虫 前言 一.常用pip模块介绍 1.NumPy库 2.Pandas库 3.Requests库 4.BeautifulSoup库 ...

  3. 爬虫文档学习 xpath bs4 selenium scrapy...

    爬虫 一.介绍 1.什么是爬虫 1.1 爬虫(Spider)的概念 爬虫用于爬取数据, 又称之为数据采集程序. 爬取的数据来源于网络,网络中的数据可以是由Web服务器(Nginx/Apache).数据 ...

  4. python爬虫scrapy安装_零基础写python爬虫之爬虫框架Scrapy安装配置

    前面十章爬虫笔记陆陆续续记录了一些简单的Python爬虫知识, 用来解决简单的贴吧下载,绩点运算自然不在话下. 不过要想批量下载大量的内容,比如知乎的所有的问答,那便显得游刃不有余了点. 于是乎,爬虫 ...

  5. pythonscrapy爬虫安装_零基础写python爬虫之爬虫框架Scrapy安装配置

    前面十章爬虫笔记陆陆续续记录了一些简单的Python爬虫知识, 用来解决简单的贴吧下载,绩点运算自然不在话下. 不过要想批量下载大量的内容,比如知乎的所有的问答,那便显得游刃不有余了点. 于是乎,爬虫 ...

  6. Python零基础爬虫之回车桌面壁纸并实现自动换壁纸(内附完整源码)

    前言 嗨喽,大家好,这里是魔王~ [课题]: Python零基础爬虫之回车桌面壁纸 [课题介绍]: 壁纸不应该只是一张图片,它应该是一门哲学 回车桌面网100000张无水印,高分辨率,电脑桌面壁纸, ...

  7. Python爬虫基础:安装Scrapy爬虫框架和创建Scrapy爬虫项目

    首先为了避免国外镜像不稳定,我们使用了清华大学的python库镜像:https://pypi.tuna.tsinghua.edu.cn/simple 1.安装scrapy 1.1.安装pywin32( ...

  8. Python爬虫——零基础实现基于scrapy框架的项目

    1. 生成器 yield作用 : 把一个函数当做一个生成器使用 斐波那契数列: def fib(n):a, b, s = 0, 1, 0while s<n:a, b = b, a+bs += 1 ...

  9. Python爬虫进阶——Scrapy框架原理及分布式爬虫构建

    1 Scrapy简介 1.1 概念 Scrapy是由Python语言开发的一个快速.高层次的屏幕抓取和web信息抓取框架,用于抓取web站点并从页面中提取结构化的数据. Scrapy用途广泛,可以用于 ...

最新文章

  1. Atitit.java c#这类编程语言的设计失败点attilax总结
  2. zookeeper源码分析之二客户端启动
  3. 3-2:HTTP协议之URI(URL)和HTTP基本概念及其特征
  4. andorid使能ftrace失败
  5. 话题热议:有没有能替代Excel的数据处理软件?
  6. 马氏距离 Mahalanobis Distance
  7. 基于安卓Android平台的数独游戏的开发
  8. 呕心编写的《金牌网管师——金牌网吧网管》
  9. 商品品牌信息的增删改查操作步骤_畅购商城(三):商品管理
  10. 苹果授权登录绑定手机号被拒绝
  11. 第一章 Caché 服务器页面简介 - 什么是CSP
  12. ESP32 HTTP 使用入门
  13. 更新数据update
  14. 电子游戏销售数据分析(基于Python+Tableau)
  15. 中学计算机课注意事项,教育信息技术在初中物理课堂教学中的优点与注意事项...
  16. java基础--内部类学习笔记
  17. Spark 中 RDD 的详细介绍
  18. link和@import之间的区别
  19. 【Excel】批量提取超链接中的链接地址
  20. 浅写一下iOS录屏开发~ 搬砖人的自我记录

热门文章

  1. 抖音直播带货数据在哪里看?有哪些考核指标?
  2. 计算机网络——学习笔记
  3. 虚拟机安装Linux系列教材 (二)- 关闭Hiper-V
  4. 太难了!谷歌无人车老大承认遥遥无期,全自动驾驶寒冬将至?
  5. (6)电报机与继电器
  6. 简单明了的LSTM/GRU应用实例(Tensorflow版)
  7. Windows进程简介
  8. jspm汽车配件销售管理系统毕业设计(附源码、运行环境)
  9. 为什么不能直接通过IP访问网站
  10. 分式化简结果要求_分式化简的结果有什么要求?