先附上代码
import urllib.request
import requests
import re
#爬取网页地址
url = "http://news.ifeng.com/a/20161115/50258273_0.shtml"
#获取网页
html = requests.get(url)
#指定网页编码为utf-8
html.encoding = "utf-8"
#打印出网页信息
print (html.content.decode())
#利用正则表达式获取图片网址
reg = r'src="(.*?\.jpg)"'
img = re.compile(reg)
imglist = re.findall(img, html.content.decode())
#打印出所有的图片链接
print (imglist)
#下载图片
x = 0
for imgurl in imglist:
urllib.request.urlretrieve(imgurl,'E:\\python\\爬虫数据\\%s.jpg'%x)
x = x + 1
函数详解:
一、requests.get(url)
requests.get()
是requests
库里的一个函数,作用是获取url(网址)的请求。
其中,requests.get(url).content
是显示其文本,requests.get(url).content.decode()
是对其文本进行解码。
二、re.compile(reg)
re.compile(reg)
是re
库里的一个函数,用来优化正则的,它将正则表达式转化为pattern,re.findall(pattern, string)的调用方式就转换为 pattern.search(string)的调用方式。它自己使用没有什么意义,这里与re.findall()一起使用。其中reg
是一个正则表达式。(正则表达式简单教程)
三、re.findall(img, html.content.decode())
re.fdindall()
返回的对象是一个列表。它返回的是在html.content.decode()
中利用compile()
匹配到的的信息。在这里它返回的就是图片的链接。
四、urllib.request.urlretrieve()
这个函数是下载用的。里面的参数是(下载链接,‘保存地址’%x)
。结合代码,这个x是爬取图片的名称。