在了解了认识爬虫后我们就开始我们的简单爬虫练习吧!
urllib库的基本使用
urllib是python内置的HTTP请求库,无需安装即可使用,它包含了4个模块:
1,request:它是最基本的http请求模块,用来模拟发送请求。
2,error:异常处理模块,如果出现错误可以捕获这些异常。
3,parse:一个工具模块,提供了许多URL处理方法,如:拆分、解析、合并等。
4,robotparser:主要用来识别网站的robots.txt文件,然后判断哪些网站可以爬。
因为urllib模块是python自带的模块所以我们不需要安装直接导入使用即可
# 导入urllib库
import urllib.request
# 通过百度的url向百度网发送请求,并返回百度网响应的类文件对象
response = urllib.request.urlopen("http://www.baidu.com/")
# 类文件对象支持 文件对象的操作方法,如read()方法读取文件全部内容,返回字符串
html = response.read()
# 打印字符串
print(html)
##结果如下(我只截取了前面一点)
b'<!DOCTYPE html><!--STATUS OK-->\n\n\n <html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8">...
实际上,如果我们在浏览器上打开百度主页, 右键选择“查看源代码”,你会发现,跟我们刚才打印出来的是一模一样。也就是说,上面的4行代码就已经帮我们把百度的首页的全部代码爬了下来。其中的b代表了这些数据是二进制数据
User-Agent
但是这样直接用urllib给一个网站发送请求的话,确实略有些唐突了,就好比,人家每家都有门,你以一个路人的身份直接闯进去显然不是很礼貌。而且有一些站点不喜欢被程序(非人为访问)访问,有可能会拒绝你的访问请求。
但是如果我们用一个合法的身份去请求别人网站,显然人家就是欢迎的,所以我们就应该给我们的这个代码加上一个身份,就是所谓的User-Agent
头。
- 浏览器 就是互联网世界上公认被允许的身份,如果我们希望我们的爬虫程序更像一个真实用户,那我们第一步就是需要伪装成一个被浏览器。用不同的浏览器在发送请求的时候,会有不同的 User-Agent 报头。
- urllib默认的User-Agent头为:
Python-urllib/x.y
(x和y 是Python 主.次 版本号,例如 Python-urllib/3.7)
获取User-Agent
# 导入urllib模块
import urllib.request
#访问的网站
url = "http://www.baidu.com/"
# IE 9.0 的 User-Agent,包含在 user_agent里
user_agent = {"User-Agent": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"}
# url 连同 headers,一起构造Request请求,这个请求将附带 IE9.0 浏览器的User-Agent
request = urllib.request.Request(url=url, headers=user_agent)
# 向服务器发送这个请求
response = urllib.request.urlopen(request)
html = response.read()
print(html)
##结果如下(我只截取了前面一点)
b'<!DOCTYPE html><!--STATUS OK-->\n\n\n <html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8">...
由于如今的爬虫使用urllib模块的使用很少很少,所以我们对于urllib模块只做了解即可。希望喜欢的朋友点个关注,我会陆陆续续的发表文章分享自己学习爬虫的经过,从简单爬虫,到分布式爬虫,多线程爬虫,以及Scrapy框架的学习。