第一个爬虫程序

网络爬虫使用程序代码来访问网站,而非人类亲自点击访问,因此爬虫程序也被叫做“爬虫机器人”。绝大网站都具备一定的反爬能力,禁止网络爬虫大量访问网站,以免给网站服务器带来压力

import urllib.request
from urllib import request
#导包,使用urllib库的request模块


response = urllib.request.urlopen('http://www.baidu.com/')
html = response.read().decode('utf-8')
print(html)

python内置的urllib库获取网页的html信息。urllib库属于python的标准模块。是python爬虫的常用模块。

urllib的模块如下:

  • 1.urlopen():表示向网站发起请求并获取响应对象
urllib.request.urlopen(url,timeout)

urlopen()有两个参数:url 表示要爬取的数据的url地址,timeout:表示等待超时时间,指定时间内未得到响应就抛出超市异常

urllib库有几个模块:

  • resquest 请求网址的模块
  • error 异常处理模块
  • parse 用于修改拼接的模块
  • robotparser 判断那些网站可以爬,那些网站不能爬

urlopen()

向网站发出请求,获得响应对象

urllib.request.urlopen(urt,timeout)
  • url表示要爬取数据的地址
  • timeout:设置等待时间,超过时间显示异常

其中 urlopen() 表示打开一个网页地址。注意:请求的 url 必须带有 http 或者 https 传输协议。

  1. bytes = response.read() # read()返回结果为 bytes 数据类型
  2. string = response.read().decode() # decode()将字节串转换为 string 类型
  3. url = response.geturl() # 返回响应对象的URL地址
  4. code = response.getcode() # 返回请求时的HTTP响应码
  • 查看网站是否请求爬取成功,status函数就是状态,返回404就是失败,返回220就表示成功了
    在这里插入图片描述

Resquest()

该方法用于创建请求对象,包装请求头

urllib.request.Resquest(url,headers)
  • url 请求的url的地址
  • headers 重构请求头

因为有很多的网站禁止网爬虫访问网站,以免给服务器带来压力。我们可以使用user-Agent来修改请求头。
在这里插入图片描述

出现了python3.7,如果直接爬取,服务器会知道这是网络爬虫。所以我们要修改请求头,伪装一下
在这里插入图片描述

这个时候就被修改成mac在访问它

headers的{ }中要加加入**”user-Agent“:” “** 后面加入常见的请求头

常见的user-Agent请求头

系统浏览器User-Agent字符串
MacChromeMozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36
MacFirefoxMozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:65.0) Gecko/20100101 Firefox/65.0
MacSafariMozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
WindowsChromeMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36
WindowsEdgeMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763
WindowsIEMozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
iOSChromeMozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/31.0.1650.18 Mobile/11B554a Safari/8536.25
iOSSafariMozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4
AndroidChromeMozilla/5.0 (Linux; Android 4.2.1; M040 Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36
AndroidWebkitMozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; M351 Build/KTU84P) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

但是当URL路径中带有中文或者特殊字符的时候,就要对URL进行编码,使用安全字符去表示那些不安全的字符。

URL组成

URL有一些,协议,域名,端口号,路径和查询字符串

URL 中只允许使用 ASCII 字符集可以显示的字符,比如英文字母、数字、和- _ . ~ ! *这 6 个特殊字符。当在 URL 中使用不属于 ASCII 字符集的字符时,就要使用特殊的符号对该字符进行编码,比如空格需要用%20来表示。

字符含义十六进制值编码
+URL 中 + 号表示空格%2B
空格URL中的空格可以编码为 + 号或者 %20%20
/分隔目录和子目录%2F
?分隔实际的 URL 和参数%3F
%指定特殊字符%25
#表示书签%23
&URL 中指定的参数间的分隔符%26
=URL 中指定参数的值%3D
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值