爬虫入门二(urllib,urllib2)

时间:2022-09-09 18:10:53

看了下网上的概念,比较模糊不知道作用。利用例子总结了一下。

1.爬虫

网站有各种数据,获得自己感兴趣的数据并保存的一种脚本。

2.通信基础

1.post和get:(1)get是从服务器上获取数据,post是向服务器传送数据。 
(2) 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据包装后提交。 
(3) GET方式提交的数据最多只能有1024字节,而POST则没有此限制。(对于具体大小各种说法,普遍认为) 
(4)get数据会显示在地址栏,密码一类敏感数据应该post方式 
一个大神的总结:http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html 
2.request 和response: 
(1)response的对象封装了服务器向客户端响应的数据和告诉客户端应该进行什么样的操作 
(2)request包含了客户端向服务器端的请求,例如账号密码。

3.利用urllib2

参考:https://www.zhihu.com/question/20899988/answer/97620435 
1.获得百度贴吧图片:

#coding=utf-8
图片网址:http://tieba.baidu.com/p/2460150866
浏览器定位到图片相应位置
<img pic_type="0" class="BDE_Image" src="https://imgsa.baidu.com/forum/w%3D580/sign=294db374d462853592e0d229a0ee76f2/e732c895d143ad4b630e8f4683025aafa40f0611.jpg" pic_ext="bmp" height="328" width="560">
我们想要获得这个图片的url,书写正则表达式匹配。r'src="(.+?\.jpg)" pic_ext' 括号里面的group1是想要的内容
import urllib2
import urllib
import re

def getHtml(url):
#1.
# request=urllib2.Request(url) 构造了一个request
# responseurllib2.urlopen(request) 使用request向服务器发送请求并获得了response
#2.
page = urllib2.urlopen(url)#直接打来url,和上面一样
response = page.read()
return response


def saveImg(imageUrl,filename):#保存操作
u=urllib.urlopen(imageUrl)
data=u.read()
f=open(filename,'wb')
f.write(data)
f.close()

def getImg(html):
reg = r'src="(.+?\.jpg)" pic_ext'#正则表达式
imgre = re.compile(reg) #pattern
imglist = re.findall(imgre,html)#匹配
x = 0
for imgurl in imglist:
saveImg(imgurl,str(x)+".jpg")
x+=1

html = getHtml("http://tieba.baidu.com/p/2460150866")
getImg(html)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

2.访问空间:cookie的保存以及使用

#coding=utf-8
import urllib2
import urllib
import cookielib
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent' : user_agent }#识别客户端

filename='cookie.txt'
#创一个cookie实例,保存
cookie=cookielib.MozillaCookieJar(filename)
#创建cookie处理器并建opener,urlopen其实就是个默认的opener,我们以后就用opener代替了urlopen
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

postdata=urllib.urlencode({
'uinArea':'1184996095',
'pwdArea':'18221056092',

})

loginUrl='https://i.qq.com/?rd=1'
#创建request
request=urllib2.Request(loginUrl,postdata,headers)
try:
result=opener.open(request)
except urllib2.HTTPError, e:
print e.code
print e.reason
#保存cookie,即使被丢弃和已经存在也保存
cookie.save(ignore_discard=True,ignore_expires=True)
anotherUrl='https://user.qzone.qq.com/916169754?ptlang=2052&source=friendlist'
#从文件里获得cookie = cookielib.MozillaCookieJar(filename)
#opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
while(True):
result=opener.open(anotherUrl)#获得的response
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

3.几个小操作(以后直接用了):

# def saveImg(self,imageUrl,filename):
# u=urllib.urlopen(imageUrl)
# data=u.read()
# f=open(filename,'wb')
# f.write(data)
# f.close()
#
# def saveBrief(self,content,name):
# filename=name+'/'+name+".txt"
# f=open(filename,'w+')
# f.write(content.encode('utf-8'))
# import os
# def makedir(self,path):
# path=path.strip()
# isExists=os.path.exists(path)
# if not isExists:
# os.makedirs(path)
# return True
# else:
# return False
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
爬虫入门二(urllib,urllib2)

4.个人总结:

emmmm..大概流程就是请求获得目标网址所有内容,写正则,匹配获得所需,保存。 

cookie的获得和保存。先创建cookie,再创opener,用来获取url,各种操作获得数据保存。

北京隆鼻最好的医院http://www.fnxyey.com/
北京隆鼻需要多少钱http://www.fnxyey.com/