1.开发爬虫的基本流程
2.我们的第一个爬虫程序
3.urllib响应对象的使用
4.Request对象的使用
5.urllib发送get请求
一.开发爬虫的基本流程
- 基本流程 1. 目标数据:我们想要爬取什么数据2. 数据来源的地址3. 结构分析4. 实现代码
- 基本手段 1. 破解请求限制 1. 请求头设置2. 控制请求频率3. IP代理2. 破解登录授权 1. 请求带上用户cookie信息3. 破解验证码 1. 简单的验证码可以使用识图读验证码第三方库
- 解析数据- 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响应对象的使用
- requset.urlopen(url,data,timeout) 1. 第一个参数url即为URL,是必须要传送的。第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间。2. 第二三个参数是可以不传送的,data默认为空None,timeout默认为
socket._GLOBAL_DEFAULT_TIMEOUT
- response.read()1. read()方法就是读取文件里的全部内容,返回bytes类型
- response.getcode() 1. 返回 HTTP的响应码,成功返回200,4服务器页面出错,5服务器问题
- 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())
版权归原作者 tttzx@ 所有, 如有侵权,请联系我们删除。