系统:Mac sierra 版本:10.12.6 必备知识:最好具备python的基础知识,我已经有这个基础了,所以不知道没有会不会有很大影响
python基础我个人是在http://www.runoob.com/python/python-tutorial.html自学的,如果比较着急可以不学后面的高级编程,基础应付这个也足够了,只是高级教程也需要学的,建议一起学了
今天正式开始接触爬虫,搜了很久比较完整的爬虫视频貌似都是2.7的,而我偏偏用的3.6
首先是导入urllib的库,视频基本都是urllib2..不用费心思导入了,python3合并成urlib了,并且是个文件夹直接import urllib是没啥鸟用的
现在来说只需要导入一个request请求就行了
代码是:from urllibimport request
发请求方式也不是urllib.urlopen('xxxx')
而是request.urlopen()
其实就是把urllib换成了request,至少目前而言是这样的,后面会有所区别.
那么代码应该是:
from urllib import request if __name__ == "__main__": request_url = "http://www.baidu.com" response = request.urlopen(request_url) print(response.read())
输出的是一堆html代码.这就是一个普通的http请求
之后就是加入一个User-Agent,User-Agent的作用就是让伪装成各种浏览器,就是让对方后台误以为我们是浏览器,而非纯代码
做法就是在http请求里面加一个头文件,需要看各个浏览器的User-Agent 直接google或者百度User-Agent是能找到的
这里我用Mac safari的User-Agent 为:User-Agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50
那么新代码就是:
from urllib import request if __name__ == "__main__": user_agent = "User-Agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50" headers = { "User-Agent": user_agent} #请求头并非只有一个键值对,所以用字典类型 req = request.Request("http://www.baidu.com",headers = headers) #创建请求 response = request.urlopen(req) print (response.read())
执行之后可能会报错,urllib.error.URLError:
没遇到的直接跳过就行了。遇到了导入ssl然后加上默认补验证的代码:
更改后代码为:
from urllib import request import ssl if __name__ == "__main__": ssl._create_default_https_context = ssl._create_unverified_context user_agent = r"User-Agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50" headers = { "User-Agent": user_agent} #请求头并非只有一个键值对,所以用字典类型 req = request.Request("http://www.baidu.com",headers = headers) #创建请求 response = request.urlopen(req) print (response.read())
返回就是最早出现的html文档