爬虫requests+综合练习

Day2 - 1.requests第一血_哔哩哔哩_bilibili

requests作用:模拟浏览器发请求

requests流程:指定url -> 发起请求 -> 获取响应数据 -> 持续化存储

爬取搜狗首页的页面数据

import requests# 指定url
url = 'https://sogou.com'
# 发起请求
response = requests.get(url)
# 获取响应数据,text返回字符串形式的响应数据
page_txt = response.text
# 持久化存储
with open('./sogpu.html', 'w', encoding='utf-8') as fp:fp.write(page_txt)

简易网页采集器

输入关键词后,爬取搜索结果的页面信息

https://www.sogou.com/web?query=%E8%B5%B5%E6%B5%A9%E7%84%B6&_asf=www.sogou.com&_ast=&w=01019900&p=40040100&ie=utf8&from=index-nologin&s_from=index&sut=2106&sst0=1705812059807&lkt=0%2C0%2C0&sugsuv=1705811188521571&sugtime=1705812059807

把url中多余的参数去掉

https://www.sogou.com/web?query=%E8%B5%B5%E6%B5%A9%E7%84%B6

这里的中文变成了乱码,无需处理,当然想手动换成中文也行

为了使关键词可变,需要处理url携带的参数:封装到字典中

再把url中的参数删干净https://www.sogou.com/web

import requestsurl = 'https://www.sogou.com/web'
keyword = input()
param = {'query': keyword
}
response = requests.get(url, params=param)
page_txt = response.text
filename = keyword+'.html'
with open(filename, 'w', encoding='utf-8') as fp:fp.write(page_txt)

UA伪装

此次案例中需要介绍一种反扒机制——UA检测

UA:User-Agent:请求载体的身份标识

UA检测:门户网站的服务器会检测对应请求的载体身份标识,如果检测到载体身份标识为某一款浏览器,则认为是正常的请求;否则认为是不正常的请求

UA伪装:将对应的User-Agent封装到headers字典中

f12或者检查页面,找到网络部分,先清楚网络日志再刷新页面,找到需要的请求对应的UA

然后把这个headers字典放入get请求中

import requestsheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0'
}
url = 'https://www.sogou.com/web'
keyword = input()
param = {'query': keyword
}
response = requests.get(url, params=param, headers=headers)
page_txt = response.text
filename = keyword+'.html'
with open(filename, 'w', encoding='utf-8') as fp:fp.write(page_txt)

破解百度翻译

爬取百度翻译中,对应单词翻译的结果

由于我们不是想要爬取整个页面,而是爬取页面中的部分信息,经常需要用到数据解析

但不使用数据解析也能获取局部信息,这次我们就不使用

从上面两张图我们可以看出,输入单词后页面做了一个局部的刷新,我们知道局部的刷新是可以通过Ajax实现的,也就意味着我们在文本框中输入字符后,会自动进行Ajax的请求发送,Ajax请求成功后会对页面进行局部刷新

经过分析,我们是不是应该利用抓包工具,捕获一下对应的Ajax请求

点击XHR,XHR中对应的是Ajax请求的数据包

输入dog

在xhr类型中一个个找

查看post请求携带的参数是d,不清楚是什么东西,所以接着往下看

三个sug包对应的是每输入一个字符后的Ajax请求,我们需要的是dog的翻译结果,所以要抓最后一个sug包

这样我们就拿到了请求的url,Content-Type这里是指我们输入一个字符后,服务器端响应回来的是一组json串

分析总结

(1)post请求(携带了参数)

(2)响应数据是一组json数据

import requests
import jsonpost_url = 'https://fanyi.baidu.com/sug'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36 HBPC/12.1.3.303'
}
word = input()
data = {'kw': word
}
response = requests.post(url=post_url, data=data, headers=headers)
# 响应数据是json数据,如果继续使用.text获取的是一组字符串形式的json,而.json返回的是一个obj,json是什么对象就是什么对象,在这里是字典
dict_obj = response.json()
# 由于是字典对象,所以不能直接write
filename = './' + word + '.json'
fp = open(filename, 'w', encoding='utf-8')
json.dump(dict_obj, fp, ensure_ascii=False)  # 字典中有中文,不用ascii编码

未完待续...

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

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

相关文章

Three.JS教程1 环境搭建、场景与相机

Three.JS教程1 环境搭建、场景与相机 一、Three.JS简介二、环境搭建1. 开发准备2. 安装 three.js3. 新建文件index.htmlmain.js 4. 关于附加组件5. 启动 三、创建场景1. 场景的概念2. 相机的概念3. 相机的几个相关概念(1)视点(Position&#…

ES-同词义配置

定义 语主相近或相同品牌类目关联搜索它等于搜索它 配置方法 1. 进入ES第一个节点:cd node1/config/analysis-ik 添加近义词echo 凯悦,锡伯,红桃 > vim synonyms.txt 2. 将配置得制到节点2与节点3 cp synonyms.txt /opt/elasticsearch8.0.0/node2/config/a…

【redis13】集群前奏:sentinel模式

1.哨兵sentinel引入背景 我们现在来思考一个问题:如何实现服务的高可用。我们首先想到至少要满足两个要求:1.服务端能够实现主从自动切换;2.对于客户端来说,如果发生了主从切换,则能够自动连接到最新的master节点。 我…

S/MIME电子邮件证书申请指南

近年来,邮件安全问题日益突出,电子邮件成为诈骗、勒索软件攻击的重灾区。恶意邮件的占比屡创新高,邮件泄密事件更是比比皆是。在如此严峻的网络安全形势下,使用S/MIME电子邮件证书进行邮件收发是当今最佳的邮件安全解决方案之一。…

【PICO】【Unity】【VR】如何对打包后的PICO项目有效Debug

【背景】 PICO项目打包后再运行就看不到Console了。当然,会有各类专业的Debug工具。 有一类Debug的工具是Preview形式下展示Debug信息,但是发现Preview成功不见得打包也成功。 打包后也会有一些Debug工具,不过这里我给出自己的简单解决办法。 【解决方案】 Unity Console…

Java毕业设计-基于jsp+servlet的大学生学业规划咨询服务平台管理系统-第84期

获取源码资料,请移步从戎源码网:从戎源码网_专业的计算机毕业设计网站 项目介绍 基于jspservlet的大学生学业规划咨询服务平台管理系统:前端 jsp、jquery、ajax,后端 servlet、jdbc,角色分为管理员、学生&#xff1b…

Linux——进程等待

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、为什么要进程等待二、进程等待的方法1、wait方法2、waitpid方法 三、获取子进程status 一…

pxe高效批量网络装机 以及安装教程

系统装机的三种引导模式 1.pe 2光驱 3.网卡 打开本机桌面 可以看见背景图片 查看配置文件内容 文件时引导选项的功能 pxe原理: 先根据dhcp找到IP地址、和引导程序的地址,还提供客户机tftp地址,因为tftp是小文件,容量小&#…

【占用网络】FlashOcc:基于2D卷积的占用预测模型

前言 FlashOcc是一个它只需2D卷积就能实现“占用预测模型”,具有快速、节约内存、易部署的特点,偏工程方向的工作。 它首先采用2D卷积提取图形信息,生成BEV特征。然后通过通道到高度变换,将BEV特征提升到3D空间特征。 对于常规…

攻防世界——Shuffle

32bit打开 main函数F5 下班

评论功能的设计与实现

1. 评论功能实现的思路 为文章模块实现评论功能涉及多个方面,包括数据库设计、后端逻辑和前端交互。下面是实现这一功能的基本思路: 1. 数据库设计 首先,需要在数据库中设计适当的结构来存储评论信息。通常,你会需要至少两个数…

SpringBoot+Email发送邮件

引言 邮件通知是现代应用中常见的一种通信方式,特别是在需要及时反馈、告警或重要事件通知的场景下。Spring Boot提供了简单而强大的邮件发送功能,使得实现邮件通知变得轻而易举。本文将研究如何在Spring Boot中使用JavaMailSender实现邮件发送&#xf…

面试经典150题(85-87)

leetcode 150道题 计划花两个月时候刷完,今天(第四十三天)完成了3道(85-87)150: 85.(77. 组合)题目描述: 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可…

Unity中URP下的SimpleLit的 Lambert漫反射计算

文章目录 前言一、Lambert漫反射计算11、MixRealtimeAndBakedGI 函数有三个重载2、3号 调用了 2号3、1号调用了 SubtractDirectMainLightFromLightmap函数4、我们重点来看 Lambert漫反射的实现部分5、其余部分 二、Lambert漫反射计算21、LightingLambert 前言 在之前的文章中&…

Python学习之路-Python操作redis

Python学习之路-Python操作redis 前言 在Python中操作Redis可以直接用redis模块 安装 安装Redis的有3种方式https://github.com/andymccurdy/redis-py 第一种:进⼊虚拟环境py_django,联⽹安装包redis pip install redis第二种:进⼊虚拟环…

【VRTK】【Unity】【PICO】PICO项目打包后闪退的根本原因

【背景】 一开始打包运行好好的PICO项目,中途用Preview模式开发了一阵后,再次打包就闪退了。 【分析】 项目设置没有动过,那么可能是Preview开发过程中引入的包导致的问题。 【答案】 千万不要在PICO项目中导入Oculus包。我原本想用一些…

Python小项目:还在为备份烦恼?这个tkinter项目帮你解决!

文章目录 1 引言2 Tkinter概览3 设计备份软件的界面4 文件夹选择逻辑5 备份方案介绍5.1 完全备份5.2 增量备份5.3 镜像备份 完整代码: import tkinter as tk from tkinter import filedialog, messagebox import os import shutil import filecmpdef choose_source(…

MySQL自增主键为何不连续

自增值的存储原理 MyISAM引擎的自增值保存在数据文件中InnoDB引擎的自增值,保存在内存里 MySQL 8.0版本后,才有了“自增值持久化”的能力,实现了“如果发生重启,表的自增值可以恢复为MySQL重启前的值”,具体情况是&am…

Kotlin 解构声明

在一些像 Python 的高级语言中,支持 多返回值的,例如 x, y get_position() 这样操作接收。 而在 Kotlin 中,虽然不支持 多返回值,但有类似的 解构(destructure) 对象功能,叫做 解构声明。 用…

理解pytorch系列:contiguous是怎么实现的

在PyTorch中,.contiguous()方法的作用是确保张量在内存中是连续存储的。当你对张量执行某些操作,如transpose()、permute()、narrow()、expand()等之后,得到的张量可能不再在内存中连续排列。这些操作通常返回一个张量的视图,它们…