python 爬虫学习

来源:互联网 发布:洞主手工皂淘宝在哪 编辑:程序博客网 时间:2024/06/16 22:33

opencv学到心类,函数看了一遍,并不怎么记得住。算是把《opencv 2计算机视觉编程手册+源码》看完了,后两章的头文件里面,feature2D有问题,额,运行不了,等下换自己的windows试试吧。前八章的学习过程还没写在博客懒得不行。
想用python爬一下网易云的评论,哈哈,慢慢学一下。
知乎专栏,相当于总结贴
Python爬虫入门四之Urllib库的高级用法

1.简单读取html

import urllib2response=urllib2.urlopen("http://music.163.com")print response.read()

这三句就可以把网易云音乐主页的html全部输出出来。

首先,我们引入python的urllib2库。然后,我们对一个url地址进行访问。打印出来。

不想改文件名,就写一小个复制过来,文件里面就不保存了。

2.Urllib库的使用-设置Headers

import urllib  import urllib2  url = 'http://www.zhihu.com'user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0'  values = {'username' : 'cqc',  'password' : 'XXXX' }  headers = { 'User-Agent' : user_agent }  data = urllib.urlencode(values)  request = urllib2.Request(url, data, headers)  response = urllib2.urlopen(request)  page = response.read() print page

只是加个user_agent,在自己浏览器上用F12看到的。

3.cookie的使用

参考

#coding=utf-8import urllib2import cookielib#声明一个CookieJar对象实例来保存cookiecookie = cookielib.CookieJar()#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器handler=urllib2.HTTPCookieProcessor(cookie)#通过handler来构建openeropener = urllib2.build_opener(handler)#此处的open方法同urllib2的urlopen方法,也可以传入requestresponse = opener.open('http://www.music.163.com')for item in cookie:    print 'Name = '+item.name    print 'Value = '+item.value

报错: SyntaxError: Non-ASCII character ‘\xe5’ in file 是注释里面的汉字编码问题,加上#coding=utf-8即可。
输出如下

Name = BAIDUIDValue = 9309FD1C2456BA556C5B68CB37EAACC1:FG=1Name = BIDUPSIDValue = 9309FD1C2456BA556C5B68CB37EAACC1Name = H_PS_PSSIDValue = 23948_1467_19033_21119_18560_20930Name = PSTMValue = 1501119394Name = BDSVRTMValue = 0Name = BD_HOMEValue = 0

4.cookies文件的保存和读取

#coding=utf-8import cookielibimport urllib2#设置保存cookie的文件,同级目录下的cookie.txtfilename = 'cookie.txt'#声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件cookie = cookielib.MozillaCookieJar(filename)#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器handler = urllib2.HTTPCookieProcessor(cookie)#通过handler来构建openeropener = urllib2.build_opener(handler)#创建一个请求,原理同urllib2的urlopenresponse = opener.open("http://www.baidu.com")#保存cookie到文件cookie.save(ignore_discard=True, ignore_expires=True)

后面的参数官方文档如下:

ignore_discard: save even cookies set to be discarded. ignore_expires: save even cookies that have expiredThe file is overwritten if it already exists

由此可见,ignore_discard的意思是即使cookies将被丢弃也将它保存下来,ignore_expires的意思是如果在该文件中cookies已经存在,则覆盖原文件写入,在这里,我们将这两个全部设置为True。
保存.txt如图:这里写图片描述
那么我们已经做到把Cookie保存到文件中了,如果以后想使用,可以利用下面的方法来读取cookie并访问网站。

#coding=utf-8import cookielibimport urllib2#创建MozillaCookieJar实例对象cookie = cookielib.MozillaCookieJar()#从文件中读取cookie内容到变量cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True)#创建请求的requestreq = urllib2.Request("http://www.baidu.com")#利用urllib2的build_opener方法创建一个openeropener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))response = opener.open(req)print response.read()
原创粉丝点击