爬虫,初学者指南

这篇具有很好参考价值的文章主要介绍了爬虫,初学者指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一篇:爬虫入门request模块的基本使用以www.douban.com为例

get请求:

# 查看响应数据,返回的是Unicode格式的数据
print(response.text)

# # 查看响应数据,返回的是字节流数据(图片视频等)
print(response.content)

# 查看完整url地址
print(response.url)

# 查看响应头部字符编码
print(response.encoding)

# 查看响应码
print(response.status_code)

print(response)
1.想目标地址发起请求,携带heards和不携带heards的区别
import requests
url = "http://www.douban.com"
heards = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"
}
r = requests.get(url=url)
print(r)
print(r.headers)

<Response [418]>
{'Connection': 'close', 'Date': 'Sat, 23 Sep 2023 14:46:44 GMT', 'Server': 'dae', 'Content-Length': '0'}

request模块用于测速发送数据的连通性,通过回复可以看出418,Connection:close表示未获取到服务器的返回值,需要添加heards信息,此服务器拒绝非浏览器发送的请求。

import requests
url = "http://www.douban.com"
heards = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"
}
r = requests.get(url=url, headers=heards)
print(r)
print(r.headers)

<Response [200]>
{'Date': 'Sat, 23 Sep 2023 14:49:28 GMT', 'Content-Type': 'text/html; charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=30', 'X-Xss-Protection': '1; mode=block', 'X-Douban-Mobileapp': '0', 'Expires': 'Sun, 1 Jan 2006 01:00:00 GMT', 'Pragma': 'no-cache', 'Cache-Control': 'must-revalidate, no-cache, private', 'Set-Cookie': 'ck="deleted"; max-age=0; domain=.douban.com; expires=Thu, 01-Jan-1970 00:00:00 GMT; path=/, dbcl2="deleted"; max-age=0; domain=.douban.com; expires=Thu, 01-Jan-1970 00:00:00 GMT; path=/, ll="108099"; path=/; domain=.douban.com; expires=Sun, 22-Sep-2024 14:49:28 GMT, bid=ArFHHYIPdMc; Expires=Sun, 22-Sep-24 14:49:28 GMT; Domain=.douban.com; Path=/', 'X-DAE-App': 'sns', 'X-DAE-Instance': 'home', 'X-DAE-Mountpoint': 'True', 'X-DOUBAN-NEWBID': 'ArFHHYIPdMc', 'Server': 'dae', 'X-Frame-Options': 'SAMEORIGIN', 'Strict-Transport-Security': 'max-age=15552000;', 'Content-Encoding': 'gzip'}

上图可以看出添加了头信息headers之后成功获取了返回值,一般情况下使用request模块发送请求爬虫时,默认情况下都需要添加头信息

2.携带params参数以百度为例

爬虫,初学者指南,Python,爬虫

import requests
heards = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
}
url = "http://www.baidu.com/s?"
kw = {
    'wd': "python"
}
response = requests.get(url=url, params=kw, headers=heards)
# 修改编码格式如果不修改获得的响应数据会乱码
response.encoding = 'utf-8'

# 查看响应数据,返回的是Unicode格式的数据
print(response.text)

# # 查看响应数据,返回的是字节流数据(图片视频等)
print(response.content)

# 查看完整url地址
print(response.url)

# 查看响应头部字符编码
print(response.encoding)

# 查看响应码
print(response.status_code)

print(response)

 POST请求:

对于post来说我们一般需要为他构建一些参数传递也就是form表单,一般放入data中

import requests
heards = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
}
url = "https://wordpress-edu-3autumn.localprod.oc.forchange.cn/wp-login.php"
data = {
    'log': 'hello',
    'pwd': '123456',
    'wp-submit': '登录',
    'redirect_to': 'https://wordpress-edu-3autumn.localprod.oc.forchange.cn',
    'testcookie': '1'
}
response = requests.post(url=url, data=data, headers=heards)
response.encoding= 'utf-8'
print(response.text)

第二篇:非结构化数据和结构化数据的处理

非结构化数据的处理

文本、电话号码、邮箱地址

  • 正则表达式

HTML文件:

  • 正则表达式
  • XPath
  • css选择器

结构化数据的处理

  • json文件

三、Xpath详细使用:

1.什么是XPath

XPath是一门在XML文档中查找信息的语言,可用来在XML文档中对元素的属性进行遍历

2.XPath开发工具

  • 开源的Xpath表达式编辑器工具XMLQuire(XML格式文件可用)
  • Chrome插件XPath Helper
  • Firefox插件XPath Checker

3.选取节点

XPath使用路径表达式来选取XML文档中的节点或者节点集,这些路径表达式和我们在常规电脑文件系统中看到的表达式非常相似文章来源地址https://www.toymoban.com/news/detail-731701.html

下面列取了常见的路劲表达式:

表达式        描述
nodename 选取此节点的所有子节点
/ 从根节点选取
// 从匹配的训责的当前节点选择文档中的节点,从不考虑他们的位置
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性

在下面表格中,列出了一些路径表达式以及表达式的结果:

路径表达式
bookstore 选择bookstore元素的所有子节点
/bookstore 选取根元素bookstore。注释:加入路径起始于/,则此路径使用代表到某元素的绝对位置
bookstore/book 选取所有bookstore的子元素的所有book元素
//book 选取所有book子元素,而不管他们在文档中的位置
bookstore//book 选择数据bookstore元素的后代的所有book元素,而不管它们位置bookstore之下的射门位置
//@lang 选取名为lang的所有属性

 谓语(Predicates)

谓语用来查找某个特定的节点或者包含某个指定的值的节点,被嵌在方括号中

路径表达式 结果
/bookstore/book[1] 选取数据bookstore子元素的第一个book元素
/bookstore/book[last()] 选取数据bookstore子元素的最后一个book元素
/bookstore/book[last()-1] 选取数据bookstore子元素的倒数第二个book元素
/bookstore/book[position()<3] 选取最前面的两个属于bookstore元素的子元素的book元素
//title[@lang] 选取所有拥有名为lang的属性的title元素
//title[@lang='eng'] 选取所有title元素,且这些元素拥有值为eng的lang属性
/bookstore/book[price>35.00] 选取bookstore元素所有book元素,且其中的price元素的值大于35.00
/bookstore/book[price>35.00]/title 选取bookstore元素所有book元素的所有title元素,且其中的price元素的值大于35.00

选取未知节点

通配符 描述
* 匹配任何元素节点
@* 匹配任何属性节点
node() 匹配任何类型节点
路径表达式 结果
/bookstore/* 选取bookstore元素的所有子元素
//* 选取文档中的所有元素
//title[@*] 选取所有带有属性的title元素

 选取若干路径

路径表达式 结果
//book/title | //book/price 选取book元素的所哟有title和price元素
//title | //price 选取文档中的所有title和price元素
/bookstore/book/title | //price 选取属于bookstore元素的book元素的所有title元素,以及文档中所有的price元素

到了这里,关于爬虫,初学者指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法初学者指南:理解排序算法

            排序是计算机科学中的基本问题之一,也是数据处理的核心步骤。从最简单的个人项目到复杂的工业级应用,排序都扮演着关键角色。本文将介绍四种常见的排序算法:冒泡排序、插入排序、快速排序和堆排序,旨在帮助算法初学者理解这些基本概念。         冒泡

    2024年01月23日
    浏览(49)
  • 大语言模型初学者指南 (2023)

    大语言模型 (LLM) 是深度学习的一个子集,它正在彻底改变自然语言处理领域。它们是功能强大的通用语言模型,可以针对大量数据进行预训练,然后针对特定任务进行微调。这使得LLM能够拥有大量的一般数据。如果一个人想将LLM用于特定目的,他们可以简单地根据各自的目的

    2024年02月11日
    浏览(55)
  • Spark初学者指南:使用指南和示例

    本文介绍了如何使用Spark处理大规模数据集,并提供了一个Scala编写的Word Count示例,指导您从安装和配置到编写和运行Spark应用程序。无需担心,即使您是Spark初学者,也可以按照本文的步骤来学习和使用Spark。 Spark是一个流行的分布式计算框架,用于处理大规模数据集。它使

    2024年02月06日
    浏览(49)
  • UV贴图和展开初学者指南

    在线工具推荐: 3D数字孪生场景编辑器  -  GLTF/GLB材质纹理编辑器  -  3D模型在线转换  -  Three.js AI自动纹理开发包  -  YOLO 虚幻合成数据生成器  -  三维模型预览图生成器  -  3D模型语义搜索引擎 这正是本文的主题——UV贴图——登上舞台的时候。大多数 3D 建模软件在创

    2024年01月22日
    浏览(43)
  • 【深度学习】神经网络初学者指南

            这是一篇对神经网络的泛泛而谈的文章,我的意见是,先知道框架,而后知道每一个细节,这是学习人工智能的基本路线。本文就神经网络而言,谈到一些基础概念,适应于初学者建立概念。         神经网络是一组算法,以人脑为松散建模,旨在识别模式。

    2024年02月16日
    浏览(35)
  • 【深度学习】深度强化学习初学者指南

            GAN(Generative Adversarial Networks)是一种深度学习模型,它由两个神经网络组成:一个生成网络和一个判别网络。生成网络学习如何生成类似于给定数据集的新数据,而判别网络则学习如何区分生成网络生成的数据和原始数据。这两个网络相互竞争,使得生成器越来

    2024年02月13日
    浏览(34)
  • 了解 ESP32 FreeRTOS:初学者指南

    ESP32 FreeRTOS是针对ESP32微控制器的一个实时操作系统(RTOS),它采用了FreeRTOS内核,可以帮助开发人员在ESP32芯片上进行多任务处理。简单来说,FreeRTOS提供了一种方式来管理软件任务并协调它们的执行。 ESP32是一个功能强大的嵌入式系统,可以用于构建各种物联网应用程序。

    2023年04月14日
    浏览(51)
  • Unity中Interface修饰符:初学者指南

    什么是Interface?         在Unity和其他面向对象的编程语境中, interface 是一种特殊的结构,它定义了一组方法和属性,但不提供它们的实现。在C#中, interface 是通过 interface 来声明的。它像是一个合约,规定了实现它的类必须遵循的规则。 为什么要使用Interface? 约定

    2024年01月23日
    浏览(38)
  • 2023 年如何学习 SQL:初学者终极指南

    什么是 SQL,它的用途是什么? SQL 在 2023 年仍然适用吗? 你应该学习 SQL 吗? 学习 SQL 的不同方法 SQL 入门 SQL初学者可能害怕问的问题 学习 SQL 的先决条件是什么,我需要有任何编码经验吗? SQL 有哪些实际应用,哪些行业依赖于此技能? 学习SQL需要多长时间,我应该投入多

    2024年02月03日
    浏览(97)
  • 【深度学习】受限玻尔兹曼机 (RBM) 初学者指南

            受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)是一种基于能量模型的人工神经网络。它只有一个隐层,将输入层和隐层中的每个神经元互相连接,但不同层的神经元之间没有连接。RBM是一种无向的概率图模型,可以用于特征提取、数据降维、协同过滤等任务。它

    2024年02月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包