零基础爬什么值得买的榜单——爬虫练习题目一(答二)

news2025/2/3 18:53:18

新问题总在解决老问题之后出现

    • 引言
      • 原因
      • 正文
    • 开整
      • 方法一
        • 代码
        • 运行效果
      • 方法二
        • 代码
        • 运行结果
      • 推荐
    • 补充两个请求头的参数知识
      • Referer
      • User-Agent
    • 结尾

引言

今天心情不是很好
但是得更新呀
其实我写博客的一方面
也是希望大家能够监督我
让我尽量少情绪化
保持一个应有的速率做正确的知识输出
在这里插入图片描述

原因

不多吐槽
以免大家烦心
给大家两个我自己的教训

  1. 鸿星尔克除京东自营店的看,其他都不看,售后货物质量差
  2. TOPSTOPS店不看,卖的都是库存货,换货还换不到,差评
    在这里插入图片描述

正文

继续更这个Python 爬取什么值得买
已经解决了这个16进制数的问题
通过上节我们学习到了
它是Unicode转义序列,代表一个特定的Unicode字符。
其实也很简单
且方法有两种
在这里插入图片描述

开整

方法一

在这里插入图片描述
这是上一节
文章的截图
我们从里面可以知道
这段JSON格式的数据包含了一个或多个商品信息的列表,每个商品是一个字典,包含了诸如article_title(文章标题)这样的字段
在数据中,可以看到中文字符以\uXXXX的形式出现
这是因为JSON字符串中的非ASCII字符被编码成了Unicode转义序列
要从JSON数据中提取和处理这些信息
可以使用Python的json.loads()函数
将JSON字符串转换为Python对象(如字典或列表)
然后通过键名直接访问对应的值!

代码
import requests  # 导入requests库
import json

url = "https://faxian.smzdm.com/json_more?filter=h3s0t0f163c5&page=2"  # 设置请求的URL地址

headers = {
    'Referer': 'https://faxian.smzdm.com/h3s0t0f163c5p1/',  # 设置请求头的Referer字段
    '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'  # 设置请求头的User-Agent字段
}

# 模拟请求
response = requests.get(url, headers=headers)  # 发送GET请求,并将返回的响应存储在response变量中

print(response.status_code)  # 打印响应的状态码
#print(response.text)  # 打印响应的文本内容
r_data = json.loads(response.text)# 将JSON字符串转换为Python对象
print(r_data)  # 打印响应的JSON数据
运行效果

在这里插入图片描述
成功解决问题
在这里插入图片描述

方法二

第二种是当时问AI
但是问不到要点
AI也回答的莫名其妙
只能到网上找
万能的互联网总有方法
这也是玩流行的语言才能享受到的待遇

这是因为中文以 unicode 编码了,而默认是以ASCII解析的,中文不在ASCII编码中,所以无法显示。(来源)
实名感谢大佬:咖啡少女不加糖。

在这里插入图片描述
添加语句
完美! 得到中文数据

得到新代码:

代码
# 导入requests库,用于发送HTTP请求
import requests

# 导入json库,用于处理JSON数据
import json

# 设置请求的URL地址,包含页码参数
url = "https://faxian.smzdm.com/json_more?filter=h3s0t0f163c5&page=2"

# 设置请求头信息,包括Referer字段和User-Agent字段
headers = {
    'Referer': 'https://faxian.smzdm.com/h3s0t0f163c5p1/',  # 指定请求来源页面
    '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',  # 模拟浏览器访问
}

# 发送GET请求到指定URL,并设置请求头信息
response = requests.get(url, headers=headers)

# 打印请求响应的状态码,以确认请求是否成功(状态码为200表示成功)
print(response.status_code)

# 解析返回的JSON格式响应内容并转换为Python字典对象
data_dict = json.loads(response.text)

# 将解析后的数据转回为格式化的JSON字符串(确保非ASCII字符正常显示)
formatted_data = json.dumps(data_dict, ensure_ascii=False)

# 打印已格式化后的JSON数据
print(formatted_data)


运行结果

在这里插入图片描述
结果也是很不错
成功解决问题
在这里插入图片描述

推荐

针对这个问题
我觉得还是使用方法二较为稳妥
因为方法一是有局限的
也就是说我们使用的要是python3
要是不是python3
而是老的Python2
那么是不是就会失效
我们应该考虑下可能且不太常见的环境
当然这是可选项
要是只有方法一
那么我管你的
你老老实实给我升级到Python3
在这里插入图片描述

补充两个请求头的参数知识

Referer

Referer(请注意,虽然常见拼写错误为"referrer",但HTTP头部字段标准中其正确拼写是缺少第二个“r”的Referer
是一个HTTP请求头字段,它在用户从一个网页导航到另一个网页时由浏览器自动发送给服务器。当用户点击链接或提交表单时,当前页面的URL会被包含在新的HTTP请求的Referer头部信息中。

存在必要性与用途:

  1. 统计分析

    • 网站可以通过Referer头了解用户是从哪个页面或者哪个网站跳转过来的,这对于网站流量来源分析、营销活动效果评估和搜索引擎优化(SEO)至关重要。
  2. 防盗链

    • Referer头可以用于防止未经授权的网站直接链接到你的资源,例如图片、视频等。服务器可以根据Referer判断请求是否来自合法的源头,如果不是,则拒绝提供服务,以防止带宽被非法盗用。
  3. 安全防护

    • 一些安全策略会检查Referer来确认请求是否遵循预期的交互流程,比如防止跨站请求伪造(CSRF, Cross-Site Request Forgery)攻击。
  4. 用户体验优化

    • 在某些场景下,网站可以根据Referer信息调整用户的返回路径,例如在登录后重定向回原始请求页面。
  5. 内容个性化

    • 网站可以根据来源页面的内容或类型定制目标页面的展示,实现不同入口点进入同一页面的差异化体验。

为什么需要Referer

  • Referer字段的存在让网络生态能够更好地追踪用户行为,帮助开发者、管理员以及市场营销人员做出数据驱动的决策。
  • 它也是Web架构中的一种重要安全机制,对于维护网站资源的安全性和完整性起着关键作用。然而,由于隐私原因,现代浏览器支持了更严格的Referrer Policy策略,允许用户或开发人员控制如何发送或不发送此信息,以保护用户隐私。

奇怪,我又没拼错
你为什么一开头就点我
是瞧不起我的大学英语四级嘛
在这里插入图片描述

User-Agent

User-Agent是HTTP请求头中的一个字段,它包含了发起HTTP请求的客户端(通常是Web浏览器、爬虫或应用程序)的信息。这个信息通常包括操作系统类型、浏览器类型、浏览器版本以及其他可能的特定属性。

存在必要性与用途:

  1. 内容适配

    • 服务器可以根据User-Agent识别访问者的设备和浏览器类型,从而提供不同版本的内容以优化用户体验,比如为移动设备返回移动端布局的网页,或者针对不同浏览器特性加载不同的CSS样式或JavaScript代码。
  2. 统计分析

    • 网站可以收集并分析用户代理字符串,用于了解用户使用何种设备和浏览器访问网站,这对于进行市场调研、用户体验改进以及流量来源统计具有重要意义。
  3. 功能限制与服务调整

    • 根据User-Agent提供的信息,服务器可决定是否对某些不支持新特性的老旧浏览器禁用部分功能,或者针对性地提供降级服务。
  4. 反爬策略

    • 许多网站会通过检测User-Agent来防止恶意爬虫过度抓取数据,确保服务器资源不会被滥用。同时,合法的爬虫也会根据要求模拟合理的User-Agent以遵循robots.txt协议和网站规则。
  5. 安全防护

    • 在安全领域,User-Agent也是评估潜在攻击风险的一个因素之一,例如有些安全系统会基于此判断是否有非人类行为的自动化工具在尝试登录或执行其他操作。

为什么需要User-Agent

  • User-Agent的存在使得服务器能够根据不同客户端的能力和特性实现差异化服务,有助于保证Web内容和服务在各种环境下的兼容性和可用性。
  • 它也成为了网络生态中客户端与服务器之间一种重要的通信标识,帮助服务器端更好地管理资源分配、优化服务质量和实施安全控制措施。

结尾

这个问题我们已经解决了
我们可以获得我们想要的数据
下面就是对我们想要的数据
进行处理
处理:提取、收集、展示

那么
关于提取的技巧对应的是Python的什么知识点呢?
我们
在这里插入图片描述

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

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

相关文章

【VSCode 光标返回上一位置】

默认按键 Windows: Alt ← ;或者 鼠标侧键 Linux: Ctrl Alt - ;貌似数字键盘的减号没效果 Mac: Ctrl - 自定义修改方法: VSCode左下角 “管理 / Manage” “键盘快捷方式 / KeyBoard Shortcuts” 搜索 “前进 / Go Forward 或 后退 / Go Back” 双击需…

PySpark(二)RDD基础、RDD常见算子

目录 RDD RDD五大特性 RDD创建 RDD算子 常见的Transformation算子 map flatMap mapValues reduceByKey groupBy filter distinct union join intersection glom groupByKey groupByKey和reduceByKey的区别 ? sortBy sortByKey 常见的action算子 countByKey…

npm ERR! reason: certificate has expired(淘宝镜像过期)

npm ERR! request to https://registry.npm.taobao.org/yauzl/-/yauzl-2.4.1.tgz failed, reason: certificate has expired 今天在执行npm install命令时,报错百度了下是淘宝证书过期原因 解决方法一 执行下面两个命令再进行npm install即可 npm cache clean --…

LangChain结合通义千问的自建知识库

LangChain结合通义千问的自建知识库 在使用了通义千问API了之后,下一步就是构建知识库文档,使用了比较有名的LangChian,最后成果将自己的txt生成了知识向量库,最后我还把自己的论文生成了一个知识向量库,然后问他我的…

测试环境搭建整套大数据系统(一:基础配置,修改hostname,hosts,免密,时间同步)

一:使用服务器配置。 二:修改服务器名称hostname,hosts。 在 Linux 系统中,hostname 和 /etc/hosts 文件分别用于管理主机名和主机名解析。 在三台服务器上,分别执行以下命令。 vim /etc/hostnamexdso-hadoop-test-0…

Linux内核调参常用整理

一、【写在前面】 Linux内核调参是一个重要知识,这篇文章总结一下常见的参数用法。 调参位置在 /etc/sysctl.conf中或者sysctl.d 区别是: /etc/sysctl.conf 文件: 这是默认的主配置文件,包含了系统上所有的 sysctl 参数配置。所…

maven打包spring项目

常用的Maven命令如下 命令 说明mvn clean 清理Maven 项目。会删除目标路径(一般是target目录)Maven生成的打包文件,编译文件。mvn package 打包Maven项目,会生成jar 或者war文件。mvn test 执行test目录下的测试用例。mvn deploy 发布依赖到远端mvn site 生成…

Leetcode206:反转链表

一、题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表 示例: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]输入:head [1,2] 输出:[2,1]输入:head [] 输出&#xff1…

面试经典 150 题 -- 滑动窗口 (总结)

面试经典150题链接 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台 209 . 长度最小的子数组 思路 : 滑动窗口的思想,取ij0,向后遍历j,记录前缀和[l,r]为s,如果s>target,那么左端点向右移动,直到s…

net 一台路由器如何让两个不同网段的终端可以通信。

# 终端设备自己设置就行了 # 路由器的设置 The device is running! #################################################### <Huawei> Feb 1 2024 21:21:09-08:00 Huawei %%01IFPDT/4/IF_STATE(l)[0]:Interface GigabitEt hernet0/0/0 has turned into UP state. <…

Linux系统——防火墙

一、防火墙的认识 引言 安全技术 入侵检测系统&#xff08;Intrusion Detection Systems&#xff09;&#xff1a;特点是不阻断任何网络访问&#xff0c;量化、定位来自内外网络的威胁情况&#xff0c;主要以提供报警和事后监督为主&#xff0c;提供有针对性的指导措施和安全…

POI word操作,如何使表格单元格文本内容垂直/水平居中(两行代码解决)

垂直居中&#xff1a;cell本身就有垂直对齐的api&#xff0c;一行代码就够。 水平居中&#xff1a;一般方式行不通&#xff0c;网上苦找了许多方式&#xff0c;代码都太长了&#xff0c;&#xff0c;忒麻烦。于是我突发奇想&#xff0c;发现可以利用paragraph的水平居中对齐方…

Flask 入门3:Flask 请求上下文与请求

1. 前言 Flask 在处理请求与响应的过程&#xff1a; 首先我们从浏览器发送一个请求到服务端&#xff0c;由 Flask 接收了这个请求以后&#xff0c;这个请求将会由路由系统接收。然后在路由系统中&#xff0c;还可以挂入一些 “勾子”&#xff0c;在进入我们的 viewFunction …

小白水平理解面试经典题目_数组类Leetcode 412. Fizz Buzz【数学解法】

412 FizzBuzz 小白渣翻译&#xff1a; 给定一个整数 n &#xff0c;返回一个字符串数组 answer &#xff08;从 1 开始索引&#xff09;&#xff0c;其中&#xff1a; answer[i] “FizzBuzz” 如果 i 能被 3 和 5 整除。answer[i] “Fizz” 如果 i 能被 3 整除。answer[i]…

【gulp+jq+html】添加环境变量,并在js中使用(判断环境,更改api接口域名)+ 附gulpfile.js代码

参考博文&#xff1a; gulp分离环境 gulp中如何配置环境变量 gulp环境变量配置 1、安装cross-env插件 npm install cross-env -d2、package.json更改scripts "scripts": {"clean": "gulp clean","serve:test": "cross-env NODE…

IP协议(2) 和 数据链路层协议基础

IP协议续 1.路由选择 在复杂的网络结构中,我们需要找到一个通往终点的路线,这就是路由选择 举个例子:我们在没有手机导航之前,想去一个地方得是到一个地方问一下路的方式最终找到目的地 路由的过程,其实就是样子问路的过程 1.当IP数据包到达路由器的时候,会查看目的IP 2.路由器…

HAL库配置PWM模式

一、什么是PWM 脉冲宽度调制(PWM)&#xff0c;是英文“Pulse Width Modulation”的缩写&#xff0c;简称脉宽调制。通过控制高低电平在一个周期内的占比从而输出一定的电压。 向上计数原理介绍 ​PWM的一个周期 定时器从0开始向上计数 当0-t1段,定时器计数器TIMx_CNT值小于…

Springboot-前后端分离——第三篇(三层架构与控制反转(IOC)-依赖注入(DI)的学习)

本篇主要对ControllerServiceDAO三层结构以及控制反转&#xff08;IOC&#xff09;与DI&#xff08;依赖注入&#xff09;进行总结。 目录 一、三层架构&#xff1a; Controller/Service/DAO简介&#xff1a; 二、控制反转(IOC)-依赖注入(DI): 概念介绍&#xff1a; DOC与…

学校如何提升教学效率?这种方法要牢记!

随着教育信息化的发展&#xff0c;学校管理也逐渐借助先进的技术手段实现智能化、高效化。在线巡课系统作为其中的重要组成部分&#xff0c;为学校领导提供了便捷而有效的管理工具。 客户案例 中小学校长办公室 在中小学校长办公室&#xff0c;校长通过在线巡课系统可以实时查…

js 设置、获取、删除标签属性以及H5自定义属性

1. 设置标签属性 使用setAttribute()(‘属性名’, ‘属性值’)方法可以添加、修改、删除属性。   下面的demo是为input添加、修改、删除value属性&#xff1a; 1.1. HTML <input type"text" class"input"> <input type"text" class…