0


爬虫基础教学第一节

1.开发爬虫的基本流程

2.我们的第一个爬虫程序

3.urllib响应对象的使用

4.Request对象的使用

5.urllib发送get请求

一.开发爬虫的基本流程

  1. 基本流程 1. 目标数据:我们想要爬取什么数据2. 数据来源的地址3. 结构分析4. 实现代码
  2. 基本手段 1. 破解请求限制 1. 请求头设置2. 控制请求频率3. IP代理2. 破解登录授权 1. 请求带上用户cookie信息3. 破解验证码 1. 简单的验证码可以使用识图读验证码第三方库
  3. 解析数据- HTML Dom解析- 正则匹配,通过的正则表达式来匹配想要爬取的数据,如:有些数据不是在html 标签里,而是在html的script 标签的js变量中- 使用第三方库解析html dom,比较喜欢类jquery的库- 数据字符串- 正则匹配(根据情景使用)- 转 JSON/XML 对象进行解析

二.我们第一个爬虫程序

比如我们现在要去访问百度这个网址,我们要取百度根目录页面上面的数据

首先我们要导入pyhon第三方库中自带用来发送请求的对象

from urllib.request import urlopen

然后我们要把请求的地址定义成一个变量

url = 'http://www.baidu.com/'

然后发送请求,然后它会返回对象我们用变量接受

resp = urlopen(url)

然后打印我们爬取的数据

print(resp.read().decode()[:100])

代码结合:

from urllib.request import urlopen

#请求的地址
url = 'http://www.baidu.com/'

#发送请求
resp = urlopen(url)
print("\n")
#打印响应的结果
print(resp.read().decode()[:100])

三.urllib响应对象的使用

  1. requset.urlopen(url,data,timeout) 1. 第一个参数url即为URL,是必须要传送的。第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间。2. 第二三个参数是可以不传送的,data默认为空None,timeout默认为socket._GLOBAL_DEFAULT_TIMEOUT
  2. response.read()1. read()方法就是读取文件里的全部内容,返回bytes类型
  3. response.getcode() 1. 返回 HTTP的响应码,成功返回200,4服务器页面出错,5服务器问题
  4. response.geturl() 1. 返回 返回实际数据的实际URL,防止重定向问题

四:Request对象的使用

Request对象的使用主要使用用于封装作用,Request可以传入headers请求头的参数,我们爬虫开发伪装爬虫的时候几乎都需要用到

1.怎么在网站中查看请求头信息

1.首先我们要找到我要爬取数据的网址

2.然后右键点击检查

3.然后选择网络

4.然后找到大概率是第一行的这个信息

5.然后下滑找到User-Agent

然后这个后面就是请求头信息

然后我们对这个Request进行代码举例

#request可以用来封装请求头
from urllib.request import Request,urlopen

#请求地址
url = 'http://httpbin.org/get'
#设置请求头
heardes = {'User-Agent': "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Mobile Safari/537.36"}
#创建Request对象
res = Request(url,headers=heardes)
#发送请求
resq = urlopen(res)
#打印响应结果
print(resq.read().decode())

五.urllib发送get请求

get请求里面解决url里面有中文的问题
首先讲解一下在python自带urllib.parse库里面有两个转码函数quote,urlencode

quote是对单个词进行转码

urlencode是对key和value转码,就相当于python里面的字典

比如我们现在对爬虫这个词和{'wd':'python'}进行转码

1.导入转码的库函数

from urllib.parse import quote,urlencode

2.然后进行转码

#quote是对单个值进行转换的
args = 'python爬虫'
print(quote(args))
#urlencode是对键值对进行转换的
arg  = {'wd':'python爬虫'}
print(urlencode(arg))

3.结果

'''
两个值转换的结果
python%E7%88%AC%E8%99%AB
wd=python%E7%88%AC%E8%99%AB
'''

然后我们用这个来操作爬虫实例

我们要去访问python爬虫有关的知识

from urllib.request import urlopen,Request
from urllib.parse import quote

args =input('请输入要搜索的内容:')
url = f'https://www.baidu.com/s?wd={quote(args)}'
headers = {
  'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.47'
}
req = Request(url,headers = headers)
resp = urlopen(req)
print(resp.read().decode())
标签: 爬虫 python

本文转载自: https://blog.csdn.net/hhwjsj/article/details/140360948
版权归原作者 tttzx@ 所有, 如有侵权,请联系我们删除。

“爬虫基础教学第一节”的评论:

还没有评论