一、请求-响应
在利用python语言实现爬虫时,主要用到了urllib和urllib2两个库。首先用一段代码说明如下:
import urllib
import urllib2 url="http://www.baidu.com"
request=urllib2.Request(url)
response=urllib2.urlopen(request)
print response.read()
我们知道一个网页就是以html为骨架,js为肌肉,css为衣服所构成的。上述代码所实现的功能就是把百度网页的源码爬取到本地。
其中,url为要爬取的网页的网址;request发出请求,response是接受请求后给出的响应。最后用read()函数输出的就是百度网页的源码。
二、GET-POST
两者都是向网页传递数据,最重要的区别是GET方式是直接以链接形式访问,链接中包含了所有的参数,当然如果包含了密码的话是一种不安全的选择,不过你可以直观地看到自己提交了什么内容。
POST则不会在网址上显示所有的参数,不过如果你想直接查看提交了什么就不太方便了,大家可以酌情选择。
POST方式:
import urllib
import urllib2
values={'username':'2680559065@qq.com','Password':'XXXX'}
data=urllib.urlencode(values)
url='https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn'
request=urllib2.Request(url,data)
response=urllib2.urlopen(request)
print response.read()
GET方式:
import urllib
import urllib2
values={'username':'2680559065@qq.com','Password':'XXXX'}
data=urllib.urlencode(values)
url = "http://passport.csdn.net/account/login"
geturl = url + "?"+data
request=urllib2.Request(geturl)
response=urllib2.urlopen(request)
print response.read()
三、异常处理
处理异常时,用到了try-except语句。
import urllib2 try:
response=urllib2.urlopen("http://www.xxx.com")
except urllib2.URLError,e:
print e.reason
通过上述的介绍及代码展示,我们已经初步认识了爬虫过程,希望对大家有所帮助。
爬取图片:
import urllib.request
import re
import os
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
def gethtml(url):
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
req = urllib.request.Request(url=url, headers=headers)
page=urllib.request.urlopen(req)
html=page.read()
html=html.decode('utf-8')
return html
def getImg(html):
reg='<img src="(http.*?\.png)"'
imgre=re.compile(reg)
imglist=imgre.findall(html)
return imglist
def make_dir(floder):
path=os.getcwd()+'/'+floder
if not os.path.isdir(path):
os.makedirs(path)
return path
def save_image(path,imglist):
x=0
for imgurl in imglist:
print(imgurl)
urllib.request.urlretrieve(imgurl,'{}/{}.png'.format(path,x))
x=x+1
if __name__=='__main__':
html=gethtml('https://blog.csdn.net/yql_617540298/article/details/81411995')
imglist=getImg(html)
path=make_dir('test')
save_image(path,imglist)