首页 > 其他分享 >01_初识爬虫

01_初识爬虫

时间:2024-08-17 18:04:25浏览次数:10  
标签:code 浏览器 请求 爬虫 初识 01 str HTTP

初识爬虫

1 、爬虫的相关概念

什么是爬虫

网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。
原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做.

如何获取爬虫程序
● 下载其他公司开发的通用爬虫(八爪鱼)
● 开发人员自己编写
区别
通用爬虫
可以提取大多数网站的数据,但是对于网站中某些特殊数据的提取方式没有实现

自定义爬虫
可以针对某一种网站自行开发符合要求的爬虫

开发语言
只要能够发送HTTP(S)请求的任何编程语言都是可以完成爬虫程序的,例如:C++、java、php、JavaScript等等,但是论爬虫开发效率一般都指的是python语言。

爬虫分类
根据抓取网站的数量不同,大致将爬虫分为两种:
● 通用爬虫:通常指搜索引擎的爬虫,例如:https://www.baidu.com
● 聚焦爬虫:针对特定网站的爬虫

2.爬虫流程以及案例演示

聚焦爬虫代码执行流程

1.

流程说明

  1. 向起始地址发送请求,并获取响应
  2. 对响应结果进行数据提取
  3. 如果获取的数据是新的网站地址则继续发送请求并获取响应
  4. 如果获取的数据为页面需要的数据则完成数据保存

3.HTTP与HTTPS协议

目前大部分网站是基于HTTP与HTTPS进行网络交互的,在爬虫程序中也是发送网络协议来获取对应的网站信息,所以还是有必要了解网络协议。

HTTP与HTTPS相关概念

  • HTTP
    1. 超文本传输协议
    2. 默认端口号:80

  • HTTPS
    1. HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协议
    2. 默认端口号:443

HTTPS比HTTP更安全,但是性能更低。
理解HTTP协议
HTTP协议使用了TCP协议,接下来我们使用网络调试助手软件发送HTTP协议并携带hello world数据到浏览器。
软件下载地址:https://soft.3dmgame.com/down/213757.html

操作步骤:

  1. 设置网络调试助手为TCP Server端
  2. 浏览器链接网络调试助手
  3. 发送HTTP协议到浏览器并携带数据
  4. 断开连接,浏览器显示相应内容
    HTTP协议的重要信息
    在以上案例中,我们想要给浏览器发送信息并显示,就必须要带上HTTP协议。HTTP协议中有一部分数据对爬虫程序来说非常重要。分别是请求头与响应头。

常见的请求头参数

        Host (主机和端口号)
        Connection (链接类型)
        Upgrade-Insecure-Requests (升级为HTTPS请求)
        User-Agent(浏览器名称)
        Accept (传输文件类型)
        Referer (页面跳转处)
        Accept-Encoding(文件编解码格式)
        Cookie(Cookie信息)
        x-requested-with :XMLHttpRequest (表示该请求是Ajax异步请求)

响应头参数

        Set-Cookie (对方服务器设置cookie到用户浏览器的缓存)
        响应状态码
        200:成功
        302:临时转移至新的url(一般会用GET,例如原本是POST则新的请求则是GET)
        307:临时转移至新的url(原本是POST则新的请求依然是POST)
        403:无请求权限
        404:找不到该页面
        500:服务器内部错误
        503:服务不可用,一般是被反爬

浏览器发送HTTP请求过程
1. 客户端发送网站域名到DNS服务器
2. DNS服务器返回IP地址到客户端
3. 客户端根据返回的IP地址访问网站后端服务器并请求网站资源
4. 网站后端服务器返回对应页面资源

rebots协议
网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,但它仅仅是互联网中的约定而已,可以不用遵守。例如:https://www.taobao.com/robots.txt
在后期的Scrapy框架学习中,需要手动关闭Robots协议,现阶段了解即可。

谷歌浏览器插件

    XPath Helper
    Web Scraper
    Toggle JavaScript
    User-Agent Switcher for Chrome
    EditThisCookie
    SwitchySharp

插件下载地址:

https://extfans.com/
https://chrome.zzzmh.cn/#/index

请求测试软件

PostMan:https://www.postman.com/downloads
ApiPost:https://www.apipost.cn/download.html

4 编码

字符是各种文字和符号的总称,包括国家文字、标点符号、图形符号、数字等等。
字符集是多个字符的集合,字符集包括:ASCII、GB2312、Unicode等等。UTF-8是Unicode的实现方式之一

Python3中的字符串
● str:unicode的呈现形式
● bytes:字节类型,互联网上的数据都已以二进制的方式传输的

str与bytes类型的互相转换
● str使用encode方法转换为bytes
str_code = 'abc'
print(type(str_code))

byte_code = str_code.encode()
print(type(byte_code))

● bytes使用decode方法转换为str
byte_code = b'abc'
print(type(byte_code))

str_code = byte_code.decode()
print(type(str_code))
注意:编码方式必须和解码方式一样,否则就会出现乱码问题。例如使用utf-8编码,那么就必须使用utf-8解码。

标签:code,浏览器,请求,爬虫,初识,01,str,HTTP
From: https://www.cnblogs.com/pdxt666/p/18364765

相关文章

  • NP2011-SW-22-VLAN跳跃攻击_VACL(VLAN-MAP)
    vlan跳跃攻击打双层标记配置端口为access端口trunk模式最好是on关闭trunknegotiation本证vlan使用不用的vlan号配置trunk链路要设置允许哪些vlan通过交换机的aclipaclmacaclvlanacl配置access-list100permitip10.1.9.00.0.0.255anymacaccess-listextende......
  • NP2011-SW-21-端口安全_AAA_802.1X
    mac泛红攻击端口安全配置intf0/1descriptionaccessportswitchportmodeaccessswitchportaccessvlan2swichportport-securityswitchportport-securitymaximum2swichportport-securitymac-address0000.1111.2222switchportport-securitymac-address0000.11......
  • NP2011-SW-24-交换机综合实验讲解1
    交换机综合实验sw2:vlan10intf1/1swaccvlan10intvlan10ipadd192.168.1.1255.255.255.0sw4:vlan20intf1/1swmoaccswaccvlan20intvlan20ipadd192.168.2.1255.255.255.0r5:intlo0ipadd200.1.1.1255.255.255.0intf0/0noshipadd15.1.......
  • NP2011-SW-23-DHCP Snooping_DAI_IP源保护
    dhcp欺骗dhcpsnooping原理:一启用后,可以将交换机的端口分为trusted接口和untrusted接口,默认在交换机上启用后,所有接口变为untrusted接口,需要手工设置trunsted接口。对于untrusted接口,只能收到dhcp请求消息,drop掉dhcp的相应消息,并且也不会向这个接口发送出dhcp的请求消息。对于......
  • GAMES101——作业5 光线与三角形相交(菲涅尔反射率)
    任务         需要修改的函数是:         Renderer.cpp中的Render():这里你需要为每个像素生成一条对应的光线,然后调用函数castRay()来得到颜色,最后将颜色存储在帧缓冲区的相应像素中。        Triangle.hpp中的rayTriangleInter......
  • http request-01-XMLHttpRequest XHR 简单介绍
    http请求系列httprequest-01-XMLHttpRequestXHR简单介绍httprequest-01-XMLHttpRequestXHR标准Ajax详解-01-AJAX(AsynchronousJavaScriptandXML)入门介绍AjaxXHR的替代方案-fetchAjaxXHR的替代方案-fetch标准Ajax的替代方案-axios.jshttp请求-04-promise......
  • 洛谷P5663 [CSP-J2019] 加工零件
    传送门:P5663[CSP-J2019]加工零件这是一篇写于2024.8.17的做题记录,祝稻米朋友们节日快乐。废话还是少说一点比较好qwq题目意思:(一个很抽象的东西)说白了其实就是给你一张无向图,然后有p次询问,每次询问给你一个v和L,问你从1号点到v号点有没有长度为L的边。注意......
  • 【Python爬虫+可视化】利用Python爬取天气数据并实现数据可视化,绘制天气轮播图,一个完
    要使用Python爬取天气数据并实现数据可视化,特别是绘制天气轮播图(指的是随时间变化的天气图表),我们可以使用几个流行的库:requests 用于网络请求,pandas 用于数据处理,matplotlib 或 plotly 用于数据可视化。此外,为了处理时间序列数据,pandas 的日期时间功能非常有用。先来看......
  • 自学爬虫第三天,番茄小说(文字加密)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档目录                        文章目录前言一、什么是文字加密?二、步骤1.引入库2.构建请求头3.构建url列表以及章节目录列表​编辑3.先对第一章进行分析,看看内容是否正确 4.......
  • 信息学奥赛一本通编程启蒙题解(3011~3015)
    前言Hello大家好,我是文宇.正文3011#include<iostream>usingnamespacestd;intmain(){ inta,b,s; a=880; b=500; s=a*b; cout<<s; return0;}注:没有输入的都可以直接输出.3012#include<iostream>usingnamespacestd;inta,b,t;intmain(){ a=10;b=20......