python爬虫基础知识

使用python进行网络爬虫开发之前,我们要对什么是浏览器、什么HTML,HTML构成。请求URL的方法都有一个大概了解才能更清晰的了解如何进行数据爬取。

什么是浏览器?

网页浏览器,简称为浏览器,是一种用于检索并展示万维网信息资源的应用程序,这些信息资源可为网页,图片,影音或其他内容,它们由统一资源标志符标志。

浏览器是网页运行的平台,常用的浏览器有IE、火狐(Firefox)、谷歌(Chrome)、Safari和Opera等。我们平时称为五大浏览器。

不同浏览器的内核是不同的,内核负责对网页中代码的解析与渲染。同一份网页代码,在不同的内核中可能会有不同的效果。如一些网页在Chrome中可以正常打开,但在IE中却无法正常显示。

什么是网页

网页是由HTML,CSS,Javascript构成的纯文本文件。存储在各地机房的web服务器中,文件扩展名一般是.htm或.html。一般通过浏览器来阅读。

什么是HTML

超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。您可以使用 HTML 来建立自己的 WEB 站点,HTML 运行在浏览器上,由浏览器来解析。

HTML 标签是由尖括号包围的关键词,比如

HTML标签通常是成对出现的,比如

开始和结束标签也被称为开放标签和闭合标签


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>网页</title>
</head>
<body><h1>我的第一个标题</h1><p>我的第一个段落。</p></body>
</html>

简单的Python爬虫示例

通过requests.get方法获取网页内容。fake_useragent.UserAgent().random伪装访问服务器网页的客户端浏览器类型、版本等。


pip install requests
pip install fake_useragent
pip install lxml

import requests
import fake_useragent
import  lxml# 获取url
url = 'https://www.runoob.com/html/html-tutorial.html'# UA 伪装  你不能顶着我是python爬虫包的名义去爬网站
head = {# "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0""User-Agent": fake_useragent.UserAgent().random
}# 发送请求
response = requests.get(url, headers=head)# 获取相应的数据
res_text = response.textprint(res_text)response.close()

在这里插入图片描述

GET/POST请求方法

我们可以通过chrome浏览器查看GET和POST请求的数据。如果你是开发人员也可以通过Postman这种API调试工具去获取模拟请求。
在这里插入图片描述
在这里插入图片描述
GET请求比较简单,但POST请求,我们要向web服务器发送一些污染数据,这个时候网站一般需要用户登录或者申请API获取授权才能操作。

比如我们要用到百度翻译的话,要去百度翻译云申请开发者账号和服务。然后通过类似下面的Post方法传递数据并请求方法。


import requests
import random
import json
from hashlib import md5API_URL = 'http://api.fanyi.baidu.com/api/trans/vip/translate'def translate_text(query, from_lang="en",to_lang="zh"):appid = '你申请的appid'appkey = '你申请的秘钥'salt = random.randint(32768, 65536)signstr = appid + query + str(salt) + appkeysign = md5(signstr.encode("utf-8")).hexdigest()headers = {'Content-Type': 'application/x-www-form-urlencoded'}payload = {'appid': appid, 'q': query, 'from': from_lang, 'to': to_lang, 'salt': salt, 'sign': sign}# Send requestr = requests.post(API_URL, params=payload, headers=headers)return  r.json()result = translate_text(entext)
print(json.dumps(result, indent=4, ensure_ascii=False))
txt = result['trans_result'][0]['dst']
print(txt)

Xpath的基础学习

下面是一段HTML代码,把代码保存为test.html文件。


<html lang="en"><head><meta charset="UTF-8" /><title>测试</title></head><body><div><p>测试1</p></div><div class="user">你好<p>小林</p><p>小王</p><p>小赵</p><p>小含</p><a href="http://www.user.com/" title="人物" target="_self"><span>this is span</span>a 标签内容</a><a href="" class="du">du a 标签</a><img src="http://www.baidu.com/meinv.jpg" alt="" /></div><div class="content"><ul>url列表内容<li><a href="http://www.ulli.com" title="qing">baidu li 列表</a></li><li><a href="http://www.ulli1.com" title="qin">163 li 列表</a></li><li><a href="http://www.ulli2.com" alt="qi">li a 内容</a></li><li><a href="http://www.ulli3.com" class="du">li a class du 内容1</a></li><li><a href="http://www.ulli4.com" class="du">li a class du 内容2</a></li><li><b>li b 1</b></li><li><i>li b 2</i></li><li><a href="http://www.ulli5.com" id="feng">li a id feng 1</a></li></ul></div></body>
</html>

我们可以根据html代码的标签、属性、定位获取标签的信息。


from lxml import etreetree = etree.parse("./test.html")# xpath 返回的数据都是列表
# 寻找测试1对应的p标签
# 会寻找符合规则的所有标签
print(tree.xpath("/html/body/div/p"))print("寻找第一个div标签下的数据  索引从1开始 索引定位")
print(tree.xpath("/html/body/div[1]/p"))# 两个p标签
# 属性定位   @attr(class、id) = 'xxx'
print(tree.xpath("/html/body/div/p[1]"))
print(tree.xpath("/html/body/div[@class='user']/p[1]"))
print(tree.xpath("/html/body/div[@class='content']/ul/li[1]/a"))
# / 表示一个层级目录  // 表示多个层级目录 一般和属性定位配合使用  不限制后面的使用
print(tree.xpath("//div[@class='content']/ul/li[1]/a"))
print(tree.xpath("//div[@class='contnet']/ul/li"))# 取标签下的文本值 /text() 该标签下的直系文本内容  //text() 该标签下的所有文本内容
print(tree.xpath("/html/body/div[1]/p/text()")[0])
print(tree.xpath("/html/body/div[@class='user']//text()"))
# 读取属性值  /@attr
print("读取属性信息")
print(tree.xpath("//div[@class='content']/ul/li[3]/a/@href")[0])

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

【力扣 面试题02.07链表相交】一种思路极其清晰的解法

力扣一单简单题&#xff0c;看完大佬的题解真是佩服得五体投地&#xff01; 虽是一道简单题&#xff0c;当我吭哧吭哧写了几十行后&#xff0c;看到大佬仅仅几行直接秒掉&#xff0c;只能说算法的本质还是数学&#xff0c;数学逻辑思维真是太重要了&#xff0c;有时候真得慢慢去…

操作系统进程与线程篇

目录 一、进程 1.1、进程状态 1.2、进程的控制结构 1.3、进程的控制 1.4、进程的上下文切换 二、线程 2.1.线程是什么 2.2、线程与进程的比较 2.3、线程的上下文切换 2.4、线程的实现 2.5、轻量级线程 三、进程间的通信方式 3.1、管道 3.2、消息队列 3.3、共享内…

代码人生,养生有道

导言&#xff1a; 在代码的征程中&#xff0c;我们往往忽略了自身的身体健康。这次的活动&#xff0c;我们不妨一同探讨一下&#xff0c;作为程序员&#xff0c;如何通过科学的养生方式&#xff0c;告别亚健康&#xff0c;迎接更健康、更充实的人生。 工作中的挑战 繁忙的工…

Node.js与npm的准备与操作

1.下载 Node.js官网&#xff1a;Node.jsNode.js is a JavaScript runtime built on Chromes V8 JavaScript engine.https://nodejs.org/en 打开后的界面如下&#xff1a; LTS&#xff08;Long Term Support&#xff09;&#xff1a;长期支持版&#xff0c;稳定版 Current&am…

键入网址到网页显示,期间发生了什么?(计算机网络)

一、浏览器首先会对URL进行解析 下面以http://www.server.com/dir1/file1.html为例 当没有路径名时&#xff0c;就代表访问根目录下事先设置的默认文件&#xff0c;也就是 /index.html 或者 /default.html 对URL进行解析之后&#xff0c;浏览器确定了 Web 服务器和文件名&am…

算法——动态规划

动态规划&#xff1a;有很多重叠子问题&#xff0c;每一个状态一定是由上一个状态推导出来的 贪心&#xff1a;没有状态推导&#xff0c;而是从局部直接选最优的 动规五步曲&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 确定递推公式&#xff08;容…

分享89个清新唯美PPT,总有一款适合您

分享89个清新唯美PPT&#xff0c;总有一款适合您 89个清新唯美PPT下载链接&#xff1a;https://pan.baidu.com/s/14DAA9jvVmlQZ_FJ4DNy9Rw?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整…

Java Class文件结构细节最全解读

官方文档位置&#xff1a;https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html Class 类的本质 任何一个Class文件都对应着唯一一个类或接口的定义信息&#xff0c;但反过来说&#xff0c;Class文件实际上它并不一定以磁盘文件的形式存在。Class 文件是一组以8位字…

解决电脑蓝屏问题:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED,回到系统还原点

解决电脑蓝屏问题&#xff1a;SYSTEM_THREAD_EXCEPTION_NOT_HANDLED&#xff0c;回到系统还原点 1&#xff0c;蓝屏显示问题1.1&#xff0c;蓝屏1&#xff0c;清楚显示1.2&#xff0c;蓝屏2&#xff0c;模糊显示 2&#xff0c;排除故障问题3&#xff0c;解决蓝屏的有效方法 1&a…

Mac电脑音乐标签管理 Yate 激活最新 for Mac

Yate是一款非常实用的音频编辑和标记软件&#xff0c;它提供了丰富的功能和工具来帮助用户编辑、整理和管理音频文件。无论是在音乐收藏管理、DJ和音乐制作方面&#xff0c;还是在其他需要处理大量音频文件的领域&#xff0c;Yate都是非常值得推荐的工具。 Yate for Mac功能特…

(2)(2.2) Lightware SF45/B(350度)

文章目录 前言 1 安装SF45/B 2 连接自动驾驶仪 3 通过地面站进行配置 4 参数说明 前言 Lightware SF45/B 激光雷达(Lightware SF45/B lidar)是一种小型扫描激光雷达&#xff08;重约 50g&#xff09;&#xff0c;扫描度可达 350 度&#xff0c;扫描范围 50m。 1 安装SF45…

安全风险综合监测预警平台建设指南(2023 版)》正式发布,汉威科技方案领跑行业

11月24日&#xff0c;国务院安委会办公室印发《城市安全风险综合监测预警平台建设指南&#xff08;2023版&#xff09;》&#xff08;以下简称“指南”&#xff09;&#xff0c;引发行业密切关注。 据悉&#xff0c;“指南”在总结前期18 个试点城市&#xff08;区&#xff09;…

一文回顾 Polkadot 跨链技术演进,了解 Polkadot 2.0 的未来

Polkadot 的起源、完善和上线过程经历了怎样的技术迭新与路线升级&#xff1f;深入把握 Polkadot 技术模型与生态合约才能让我们更好地深耕 Polkadot 生态。 11 月 25 日晚上&#xff0c;Substrate Saturday 第 19 期活动如期举行&#xff0c;Parity 工程师 Suvi Dong、Kaicha…

MJPG-streamer方案实现物联网视频监控

目录 前言 一、JPEG&#xff0c;MJPG格式简介 JPEG MJPG MJPG的优点 MJPG的缺点 二、软硬件准备 三、编译MJPG-streamer 四、运行MJPG-streamer 五、其它常见用法 六、MJPG-streamer 程序框架 七、源码下载 前言 最近想做一个安防相关的项目&#xff0c;所以跟着韦…

RubyMine 2023 年下载、安装、使用教程,详细图解

大家好&#xff0c;今天为大家带来的是RubyMine 2023 年下载、安装、使用教程&#xff0c;详细图解。 文章目录 1 RubyMine 简介2 RubyMine 下载、安装教程RubyMine 下载RubyMine 安装 3 RubyMine 汉化4. 常用快捷键一级必会二级进阶 1 RubyMine 简介 RubyMine 是一个为 Ruby …

什么是企业资金

我从两个方面来诠释企业资金管理&#xff1a; 1、企业资金管理是什么&#xff1f; 2、企业资金管理包括什么&#xff1f; 一、企业资金管理是什么&#xff1f; 众所周知&#xff0c;每个企业都有对应的财务部门&#xff0c;专门负责管理企业的“钱”&#xff0c;和企业的“帐…

决策树(Classification and Regression Tree)

学了数据结构的树后&#xff0c;一直没发现树有哪些应用。学而时习&#xff08;实践&#xff09;之&#xff0c;不亦说乎&#xff1f;故特地上网查了查树的应用&#xff0c;在下阐释&#xff1a; 1.文件系统&#xff1a;文件和目录的组织通常以树的形式表示&#xff0c;允许高效…

前端项目中获取浏览器版本的方法

在我们的前端项目中&#xff0c;navigator.userAgent属性含有当前浏览器相关信息&#xff08;比如版本号&#xff09;。 所以当我们想要获取用户当前访问的浏览器的版本时直接去解析navigator.userAgent字段就中。 废话不多说&#xff0c;下面看封装的获取浏览器版本的函数&am…

亚马逊云与生成式 AI 的融合——生成式AI的应用领域

文章目录 前言亚马逊云科技增强客户体验聊天机器人和虚拟助手亚马逊云科技 鸿翼&#xff1a;提供精准检索和问答&#xff0c;显著提升全球化售后服务体验AI 赋能的联络中心智能导购&个性化推荐智慧数字人 提升员工生成力和创造力对话式搜索亚马逊云科技 西门子&#xff1…

论文精读 Co-DETR(Co-DINO、Co-Deformable-DETR)

DETRs with Collaborative Hybrid Assignments Training 基于协作混合分配训练的DETRs 论文链接&#xff1a;2211.12860.pdf (arxiv.org) 源码链接&#xff1a;https://github.com/Sense-X/Co-DETR 总结&#xff1a; Co-DETR基于DAB-DETR、Deformable-DETR和DINO网络进行了实…