week04day01(爬虫)

一. 爬虫

  • 只爬取公开的信息,不能爬取未公开的后台数据

1.爬虫的合法性

  • 法无禁止皆可为 -- 属于法律的灰色地带
  • https://www.tencent.com/robots.txt  -- 网站/robots.txt 可以查看禁止爬取的内容

2. URL 

  • Uniform Resource Locator  统一资源定位符
  • https://www.baidu.com:443/index.html   

3. 协议

1.http的工作流程基于请求-响应模式:
 a.客户端发出请求:

  通常是通过浏览器向服务器发出一个http请求,请求包含以下几个部分

  • 请求头:Request URL 请求的统一资源定位符、Request Method请求方法(一般get  post)
  • 元信息(metadata):浏览器类型、编码格式、缓存指令等
  • 请求体:如果请求是post方法,可以携带表单等数据
 b. 服务器处理请求

   服务器会根据请求对请求进行相应的处理:

  • 解析请求
  • 检查请求是否合法
  • 根据请求的方法进行相应的操作,例如查询数据库
  • 准备响应
 c. 服务器响应客户端

   通过响应的方式下发给客户的

  • 状态行:http版本号,状态码(200 OK)以及相关说明
  • 响应头:内容类型、长度、缓存指令等
  • 响应体:包含响应的实际东西:例如html文档、图像、音频等数据
 d. 客户端处理响应

    浏览器解释响应并且对响应进行展示处理:

  • 解析响应
  • 根据状态码判断是否成功
  • 对响应体进行处理,渲染html页面

4. 爬虫的实现过程

1.获取网络数据
  • requests: 一个python第三方库,允许发送http请求,并且获取服务器的响应,常用于网页爬取
  • selenium:自动化测试工具,可以驱动浏览器自动运行程序,获取动态网页数据
2.解析数据
  • 正则(re模块):使用正则表达式,从原始的html中去提取想要的信息
  • bs4(beautifulSoup4):python库,使用css选择器等更加方便的提取html中的结构化数据
3.保存数据
  • csv: 以逗号分隔值的结构化数据保存方式
  • excel: 电子表格
  • 数据库        

5.HBuilderX前端项目

  1. css文件夹:

        存储的是网页样式文件, cascading(层叠) style sheets (层叠样式表)

  2.img文件:

        存储各种图片

  3. js文件夹:

        存储 java script 文件

  4. index.html

      

6.requests 的基础内容介绍

import requestsresponse = requests.get(url='https://sh.zu.anjuke.com/')
print(response.status_code)
# 200 成功
# 1xx 服务器返回信息代码   2xx成功状态码  3xx重定向代码   4xx 客户端错误代码  5xx服务器错误代码
print(response.headers)
# 响应头:包含了服务器返回的元数据,例如内容类型 编码方式 时间等
print(response.content)
# 响应的原始字节数据print(response.text)
# 返回响应解码后的文本内容#response.json()
#尝试转为json格式'''
html   提供网页内容  超文本标签语言
css    设置内容的样式和布局    
js     复杂页面的变化'''
        
例子1:下载百度的一个图片
import requestsresp = requests.get(url='https://www.baidu.com/img/flexible/logo/plus_logo_web_2.png')if resp.status_code == 200:with open('baidu_logo.png','wb') as file_obj:file_obj.write(resp.content)
else:print(resp.status_code)print('下载资源失败')
例子2:  下载全民k歌中的歌曲
import requests
r = requests.get(url='https://tx.stream.kg.qq.com/njc-kgsvp/njc_0_50111_1021_d4f824ebe3aaffb5547e47ef83f98ffc73818fad.f0.m4a?vkey=11FB169B35DA40E3E1D3B5E7C0F65A98B872A8DE4B3B8F11C2BD140CC8CAFFDFEBC046A4D9F867AD91BA0A36D3F30A9ECC0CD1B4DAC2ACB98D687ACD98D5A25648FCF46E54F5C9CDAA0FF082573630790AF61D33F038D244&dis_k=902041b3dac037587b8b0bf1188dbeb3&dis_t=1708249125&fromtag=1021&ugcid=251181046_1586058630_671&nr=1')if r.status_code == 200:
# 在pycharm中创建这个歌曲文件with open('song.m4a','wb') as song_k:
#  将歌曲内容写入创建的歌曲文件song_k.write(r.content)
else:print(r.status_code)print('失败')

7. 各种错误代码

'''
400 bad request 请求无法理解
401 unauthorized(未授权)
403 forbidden 禁止访问(理解请求但是拒绝你的请求)
404 not found 资源不存在
405 not allowed 服务器不允许
413 实体大小超出限制
418 I'm a teapot  你错了 ,牛头不对马嘴
'''

8. 伪装爬取内容

   因为豆瓣有些内容禁止爬取,但是未对百度禁止,可以伪装成百度,或者伪装成正常的网页进入两种方式

#伪装成百度进行爬取

import requests
r = requests.get(url='https://movie.douban.com/top250',headers={'User-Agent': 'Baiduspider'})
print(r.status_code)
print(r.text)

# 伪装成正常网页, user-agent 后面的是网页检查中,network 中 header 最后面 user-agent中的内容

r = requests.get(url='https://movie.douban.com/top250',headers={'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36'})
print(r.status_code)
print(r.text)

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/261738.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【国产MCU】-CH32V307-通用定时器(GPTM)-单脉冲模式

通用定时器(GPTM)-单脉冲模式 文章目录 通用定时器(GPTM)-单脉冲模式1、单脉冲模式介绍2、驱动API介绍3、单脉冲使用实例本文将详细介绍如何使用CH32V307通用定时器的单脉冲模式。 1、单脉冲模式介绍 单脉冲模式可以响应一个特定的事件,在一个延迟之后产生一个脉冲,延迟…

Sora--首个大型视频生成模型

Sora--首个大型视频生成模型 胡锡进于2024年2月20日认为:台当局怂了 新的改变世界模拟器视觉数据转换视频压缩时空补丁(Spacetime Laten Patches)视频生成扩展变压器算法和模型架构结语 胡锡进于2024年2月20日认为:台当局怂了 **T…

AI Agent规划能力全面拆解

“规划今天和每天的工作,然后执行规划” -- 撒切尔夫人 规划,无论对于人类还是智能体而言,本质上是一种预先设定行动的过程,以期望通过这些行动达到特定的目标或解决特定的问题。制定一个好的规划涉及对未来情景的预测、资源的…

机器学习面试:逻辑回归与朴素贝叶斯区别

逻辑回归与朴素贝叶斯区别有以下几个方面: (1)逻辑回归是判别模型,朴素贝叶斯是生成模型,所以生成和判别的所有区别它们都有。 (2)朴素贝叶斯属于贝叶斯,逻辑回归是最大似然,两种概率哲学间的区别。 (3)朴素贝叶斯需要条件独立假设…

ClickHouse--12-可视化工具操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 可视化工具操作1 tabixhttp://ui.tabix.io/ 2 DBeaverhttps://dbeaver.io/download/ 可视化工具操作 1 tabix tabix 支持通过浏览器直接连接 ClickHouse&#xff…

【Django】Django自定义后台表单——对一个关联外键对象同时添加多个内容

以官方文档为例: 一个投票问题包含多个选项,基本的表单设计只能一个选项一个选项添加,效率较低,如何在表单设计中一次性添加多个关联选项? 示例代码: from django.contrib import adminfrom .models impo…

springboot207基于springboot的实习管理系统

实习管理系统的设计与实现 摘要 近年来,信息化管理行业的不断兴起,使得人们的日常生活越来越离不开计算机和互联网技术。首先,根据收集到的用户需求分析,对设计系统有一个初步的认识与了解,确定实习管理系统的总体功…

消息队列MQ 保证消息不丢失(消息可靠性)

文章目录 概述RabbitMQ 怎么避免消息丢失(可靠传输)RocketMQ 怎么确保消息不丢失Kafka 怎么保证消息不丢失activeMQ 怎么避免消息丢失MQ 宕机了消息是否会丢失线上服务宕机时,如何保证数据100%不丢失吗?消息队列消息持久化 概述 …

一周学会Django5 Python Web开发-Django5路由重定向

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计25条视频,包括:2024版 Django5 Python we…

JDK8 升级至JDK19

优质博文IT-BLOG-CN 目前部分项目使用JDK8,部分项目使用JDK19因此,环境变量中还是保持JDK8,只需要下载JDK19免安装版本,通过配置IDEA就可以完成本地开发。 一、IDEA 环境设置 【1】通过快捷键CTRL SHIFT ALT S或者File->P…

【SpringBoot3】Spring Security 常用注解

注:本文基于Spring Boot 3.2.1 以及 Spring Security 6.2.1 Spring Security 6 的常用注解包括以下几种,通过这些注解可以更加方便的控制资源权限。 Secured :方法执行前检查,直接判断有没有对应的角色PreAuthorize:方…

力扣102 二叉树的层序遍历 Java版本

文章目录 题目描述思路代码 题目描述 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[…

ubuntu22.04-磁盘管理-虚拟机动态扩容-系统monitor

文章目录 1.虚拟机2.ubuntu设置3.命令查看4.系统资源管理器 1.虚拟机 关闭ubuntu22.04,然后修改虚拟机设置,如下图所示: 修改容量 2.ubuntu设置 搜索打开disks,如下图所示: 选择目标磁盘,选择调整大小…

利用LaTex批量将eps转pdf、png转eps、eps转png、eps转svg

1、eps转pdf 直接使用epstopdf命令(texlive、mitex自带)。 在cmd中进入到eps矢量图片的目录,使用下面的命令: for %f in (*.eps) do epstopdf "%f" 下面是plt保存eps代码: import matplotlib.pyplot as…

LeetCode每日刷题:101. 对称二叉树

题目: 解题思路:可以新写一个函数,从root开始,root的left的头结点将记为lefttree(左子树),root的lright的头结点将记为righttree(右子树), 然后递归左子树的root.left与右…

2024.2.22

1> 将互斥机制的代码实现重新敲一遍 #include<myhead.h> int num520; //临界资源 //1、创建一个互斥锁变量 pthread_mutex_t mutex; void *task1(void *arg) {printf("11111111\n");//3、获取锁资源pthread_mutex_lock(&mutex);num1314;sleep(3);pr…

LabVIEW多通道压力传感器实时动态检测

LabVIEW多通道压力传感器实时动态检测 介绍了一种基于LabVIEW的多通道压力传感器实时动态检测系统&#xff0c;解决压阻式压力传感器温度补偿过程的复杂度&#xff0c;提高测量的准确性。通过自动轮询检测方法&#xff0c;结合硬件检测模型和多通道检测系统设计&#xff0c;本…

基于ESP32+Platformio的物联网RTOS_SDK-CC_Device

本项目基于ESP32以及Platformio平台开发&#xff0c;请自行查阅如何配置这个环境 开源gitee地址&#xff1a;cc_smart_device 如果愿意贡献项目or提出疑问和修改的&#xff0c;请在gitee上提issue 项目里的mqtt服务器是公共的 请大家最好换成私有的 否则容易收到其他用户的错误…

unity学习(34)——角色选取界面(跨场景坑多)

先把SelectMenu中的camera的audio listener去掉。 现在还是平面&#xff0c;直接在camera下面添加两个panel即可&#xff0c;应该是用不到canvas了&#xff0c;都是2D的UI。 加完以后问题来了&#xff0c;角色选择界面的按钮跑到主界面上边了&#xff0c;而且现在账号密码都输…

LabVIEW多场景微振动测试平台与教学应用

LabVIEW多场景微振动测试平台与教学应用 在多种工程实践中&#xff0c;微振动的测试与分析对于评估结构的稳定性及其对环境的影响至关重要。针对这一需求&#xff0c;开发了一套基于NI-cDAQ和LabVIEW的多场景微振动测试平台&#xff0c;提高微振动测试的精确度与灵活性&#x…