pyhon爬虫学习日记1_urllib-mac系统

来源:互联网 发布:memcached php 编辑:程序博客网 时间:2024/05/22 06:13

系统: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 requestif __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 requestif __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: <urlopen error [SSL:CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:748)>

没遇到的直接跳过就行了。遇到了导入ssl然后加上默认补验证的代码:

更改后代码为:

from urllib import requestimport sslif __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文档

原创粉丝点击