您现在的位置是:首页 > 正文

python爬虫学习入门1 urllib 库

2024-01-30 23:08:31阅读 0

python爬虫 学习

学习爬虫因为爬取的一般都是网站,在后期可能会出现需要登陆网站等等的信息, 因此在学爬虫前需要大致的了解一下html 网站的架构,以及前端向后端传递参数时候的大致要求.

http 的请求方式

  1. get 请求
  2. post 请求
    在学习的前两天如果有时间的话大致的去了解一下这两个请求方式, 在传递账号密码参数的时候一般都选择使用post 请求,这样的方式更加安全,

爬虫的一般步骤

  1. 获取你需要爬区网页的url
  2. 使用python 代码发送网络请求
  3. 获取你通过python 代码发送的网络请求的信息
  4. 对你获取到的信息进行进一步的解析
  5. 保存你解析后的内容到文件中,或者数据库中

python 提供的模块

  1. urllib 库,这是python 原生提供的库文件. 比较底层,建议去学习urllib库后看request 库会加深理解
  2. requests 库, 这是第三方提供的模块,相比较于urllib库request 库封装的更好 使用起来也比较简便

剩下的就看代码演示来加深理解

urllib 库的讲解

import urllib.request
# 导入urllib 库文件

# 按照之前的步骤,第一步是要获取爬取文件的url, 在这里以百度首页为例子

# !! 注意http 和https 还是有些不同的 至于哪些不同 我也不知道 想去了解的去百度一下吧,在这里以http 作为例子进行演示

# 1. 获取爬取网站的url 地址
url = "https://www.baidu.com"

# 2. 向网站发送请求
'''
在这里,发送请求有两种情况,一种是创建一个Resquest 我叫他为请求对象,把它当成你本人,还有一种是忽略了创建请求对象这个过程,直接去访问网站
'''
# 下面为直接访问网站的方式
# 通过urllib.request.openurl() 方法向网站发送请求后会直接返回给response 接收的信息
response = urllib.request.openurl()

# 在这里可以把response 当作一个接受信息的人,要知道他脑子里存储的信息就需要read()操作
data = response.read() # 如果把这里的data 打印下来之后会发现获取到的是二进制的文件。因此 我们要对其进行进一步的解码

# 对其进行进一步的解码操作
data = response.read().decode('uint-8')  # 这里获取到的data 信息就是解码后的html 文件信息

# 将其保存到文档的方法用下面的方法,with

with open('baidu.html', 'w', 'encoding='utf-8') as f
	f.write(data)

小结: 要注意以上的方法中是一种很直白的爬取信息的方法,网上有很多方法来反爬,用python 写了这么短的代码然后就很简单的获取到了想要的页面的信息未免也太简单了,服务器很容易知道我们就是爬虫,他们会对你采取制裁,可能会封禁你的IP让你无法访问因此在下边要对其进行稍微的加工一下

网站文章

  • Minikube vs. kind vs. k3s vs k3d vs MicroK8s

    Minikube vs. kind vs. k3s vs k3d vs MicroK8s

    另一个不同之处是,k3s 的设计易于在生产环境中部署,这使其成为在本地环境中为生产级工作负载运行 Kubernetes 的最受欢迎的选择之一,而 k3d 更适合在更小的环境中使用,例如 Raspber...

    2024-01-30 23:08:23
  • 福大计算机专业排名,2019福州大学专业排名

    福州大学是国家“211工程”重点建设高校。在福州大学众多的优秀专业中,称得上最好的专业有7个专业,这些专业是国家级重点学科,也可以说是福州大学的人才聚集地。为了让大家更好的了解这所大学的专业排名,下面...

    2024-01-30 23:07:53
  • Android之简洁天气

    Android之简洁天气

    为什么80%的码农都做不了架构师?>>> ...

    2024-01-30 23:07:46
  • [LeetCode258] Add Digits

    Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.For example:Given num = 38, the process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has on

    2024-01-30 23:07:38
  • 指令

    指令 指令的定义 指令又称为机器指令,是指计算机执行某种操作的命令,是计算机运行的最小功能单位,一台计算机的所有指令的集合构成的指令系统,又称为指令集 一台计算机只能够执行自己指令系统中的指令,不能够...

    2024-01-30 23:07:07
  • js基础篇:3、浅谈js的七种数据类型

    js的数据类型js有七种数据类型,其中又可以划分为基本数据类型(Number、String、Null、Boolean、undefined、Symbol(ES6新增))和引用数据类型(Object)。基本数据类型NumberStringNullBooleanundefin...

    2024-01-30 23:07:00
  • SSH实例(简单地增删改查功能) 热门推荐

    SSH实例(简单地增删改查功能) 热门推荐

    在网上看到一篇写的很不错的关于SSH 整合实现简单的增删改查功能的实例。 因为也是初次使用SSH框架,如有不足,请多指教。 先看一下我们完整的工程目录: 好了 我们废话不多说 直接上操作: 1.(1.)Dept 我们的Bean 包名:com.bdqn.entity(根据自己的习惯定义就可以) package com.bdqn.entity; import java.io...

    2024-01-30 23:06:53
  • JavaScript Array filter() 方法 筛选过滤去重

    filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。通过一定的条件逻辑可以筛选过滤去重。

    2024-01-30 23:06:24
  • 后端框架学习笔记

    后端框架学习笔记

    1.运行过程 WishList(Domain)-->WishListMapper(DAO)-->WishListService(Service)-->WishListControll...

    2024-01-30 23:06:16
  • Windows下的C/C++的远程调试

    Windows下的C/C++的远程调试

    1. 问题 程序员经常会面临,开发电脑上一切运行正常,但是在测试电脑上却死活都有问题。一般情况下,我们可加一些弹窗或是打印Log来进行分析调试。但是如果问题复杂时,以上方法调试还是比较麻烦。如果可以像...

    2024-01-30 23:06:07