当前位置: 首页 > news >正文

爬虫(基本知识介绍,urllib库的说明)

爬虫

爬虫基础(一些基本原理的梳理)

scheme://[username:password@]hostname[:port][/path][;parameters][?query][#fragment]

注: parameters 和 query 混用,并且现在 query 用的多

  • ?query 查询 ,用来查询某类资源,如果有多个查询,则用&隔开

https://www.baidu&ie=utf-8

  • fragment 片段 ,对资源描述的部分补充

  • 两个作用,Vue 和 React 都可以借助它来做路由管理/ 另外一个作用:用作HTML锚点

HTTP 下 加入 SSL 层 简称 HTTPS

SSL的主要作用

  • 建立一个安全通道,保证数据传输的安全性

  • 确认网站的真实性

网络相关的书籍 《计算机网络》 《图解HTTP》

  • 响应头

    • Date:用于标识响应产生的时间

    • Last-mModified:用于指定资源的最后修改时间

    • Content-Encoding:用于指定响应内容的编码

    • Serve:博阿寒服务器的信息,例如名称,版本号

    • Content-Type:文档类型,指定返回的数据是什么类型

      • text/html 返回HTML

      • application/x-javascript 返回 js

      • image/jpeg 返回图片

    • Set-Cookie:设置Cookie,响应头中的Set-Cookie用于告诉浏览器需要将此内容放在Cookie中,下次请求时将Cookie携带上

    • Expires:用于指定响应的国企时间,可以让代理服务器活浏览器将加载的内容更新到缓存中,当再次访问相同的内容时,就可以直接从缓存中加载,达到降低服务器负载,缩短加载时间的目的

css选择器

  • 要是各个选择器之间不加空格,则代表并列关系

    • div#container .wrapper

    • 选择的是 id为container 的 div 元素内部的class为wrapper的元素

爬虫概述:爬虫就是获取页面并提取和保存信息的自动化程序

Cookie和Session:Cookie和Session需要配合,一个在客户端,一个在服务端,二者共同协作,就实现了登录控制

代理:对于爬虫来说,使用代理就是为了隐藏自身IP,防止自身的IP被封锁

进程:可以理解为一个可以独立运行的程序单位

线程:是进程中的一个任务

线程是操作系统进行运算调度的最小单位,是经常中的最小运行单位

并发:宏观看起来是同时运行

并行:宏观和微观都是同时运行

基本库的使用

Request类和urlopen类相当于类库已经封装号的极其常用的请求方法

最基础的HTTP库

  • urllib

    • request (最基本的HTTP请求模块,只需url 和 额外参数)

      • urlopen() ----> 是一个类

        • data(参数) —> 要使用bytes方法将参数转换为字节流编码格式的内容,如果传递这个参数,它的请求方式将变成POST

        • timeout(参数)

        • url (参数,必填)

      • Request -------> 是一个类

        • url(参数,必填)

        • data(参数,必须传bytes类型的,如果是字典,先用urllib.parse中的urlencode方法进行编码)

        • headers (参数,是一个字典,可以通过headers参数直接构造此项,也可以通过调用请求实例的 add_header 方法添加)

        • origin-req-host(参数,指的是请求方的host名称或者IP地址)

        • method(参数,字符串参数,“GET”,“POST”…等)

    • reeor

    • parse

      • 一个工具模块,提供了URL的处理方法,例如拆分,解析,合并
    # 对于data数据的处理data = bytes(urllib.parse.urlencode({name':'germy'},encoding='utf-8')response = urllib.request.urlopen('url',data=data)print(response.read().decode('utf-8'))# timeout 和 reeor 的配合使用import urllib.requestimport urllib.errorimport sockettry:response = urllib.request.urlopen('https://www.httpbin.org/post',timeout=0.1)except urllib.error.URLError as e:if isinstance(e.reason, socket.timeout):printimport urllib.requestrequest = urllib.request.Request('url')response = urllib.request.urlopen(request)# 此时urlopen的参数是Request类型的对象print(response.read().decode('utf-8'))# 使用Request类来发请求url = 'http://www.httpbin.org/post'headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edg/135.0.0.0','Host':'www.httpbin.org'}dict = { 'name':'Germey'}data = bytes(urllib.parse.urlencode(dict), encoding='utf-8')req = request.Request(url, data, headers, method='POST')response = request.urlopen(req)print(response.read().decode('utf-8'))

高级用法

  • urllib.request 模块里的 BaseHandler 类,这是其他所有 HandLer 类的父类,提供了最基本的方法,default_openmprotocol_request

    • HTTPDefaultErroeHandler

      • 用于处理HTTP响应错误,所有错误都会抛出HTTPError类的错误
    • HTTPRedirectHandler

      • 处理重定向
    • HTTPCookieProcessor

      • 处理Cookie
    • ProxyHandler

      • 设置代理,默认为空
    • HTTPPasswordMgr

      • 用于管理密码
  • Opener类 ------> 帮助我们深入一层进行配置

    • 利用Handler类构建Opener类
    # 验证from urllib.request import HTTPPasswordMgrWithDefaultRealm, HTTPBasicAuthHandler, build_openerfrom urllib.error import URLErrorusername = 'admin'password = 'admin'url = 'https://ssr3.scrape.center/'p = HTTPPasswordMgrWithDefaultRealm()p.add_password(None, url, username, password)auth_handler = HTTPBasicAuthHandler(p)opener = build_opener(auth_handler)try:result = opener.open(url)html = result.read().decode('utf-8')print(html)except URLError as e:print(e.reason)#设置代理from urllib.request import urlopen, ProxyHandler, build_openerfrom urllib.error import URLErrorproxy_handler = ProxyHandler({'http':'http://127.0.0.1:1080','https':'https://127.0.0.1:1080'})opener = build_opener(proxy_handler)try:response = opener.open('http://www.baidu.com')print(response.read())except URLError as e:print(e.reason)# 获取Cookieimport http.cookiejar,urllib.requestcookie = http.cookiejar.CookieJar()handler = urllib.request.HTTPCookieProcessor(cookie)opener = urllib.request.build_opener(handler)response = opener.open('http://www.baidu.com')for item in cookie:print(item.name + '=' + item.value)

handler配置好,然后用Opener类打开

  • 异常处理

以上当了解就好 urllib …

看了这么久,结果跟我说这个库不好用,啊啊啊啊!!!!我服了

相关文章:

  • 波束形成(BF)从算法仿真到工程源码实现-第十二节-总结
  • Redis原理与Windows环境部署实战指南:助力测试工程师优化Celery调试
  • Java Bean演进历程:从POJO到Spring Boot配置绑定
  • Vue3 SSR生物启发架构:仿生渲染与DNA流式编码
  • 解决JSON格式数据大小写问题,以及@JsonProperty 和@JSONField序列化的区别
  • TVS管与ESD保护二极管详解:原理、区别与应用选型
  • 广东广州一家IPO资产重组疑点重重,信息披露真实性存疑
  • 通过高斯分布概率密度函数寻找到数据中的异常点
  • TLS/SSL 弱密码套件中危漏洞修复
  • Security 权限控制的基本流程
  • 基于 Python 的 ROS2 应用开发全解析
  • 【扩散模型(十三)】Break-A-Scene 可控生成,原理与代码详解(中)Cross Attn Loss 代码篇
  • tcp和udp的数据传输过程以及区别
  • neakyThrows 是 Lombok 库中的一个注解
  • LeetCode Hot100 刷题笔记(10)—— ACM格式输入输出练习
  • 2025年文件加密软件的作用及其在现代社会中的重要性
  • 类的加载过程
  • Policy Gradient思想、REINFORCE算法,以及贪吃蛇小游戏(一)
  • SDK游戏盾如何接入?复杂吗?
  • RCL谐振电压增益曲线
  • 域名解析网站登录/福州专业的seo软件
  • 怎么用wordpress做网站/系统清理优化工具
  • 武汉专业建站网/微软bing搜索引擎
  • 优化优化/苏州百度 seo
  • 免费主题wordpress/seo研究中心怎么了
  • 建设公司网站费用/引流推广多少钱一个