1.任务描述: 如何做一个爬虫
2.相关知识:
Python提供了urllib.request模块来处理url,这里我们将介绍其中两个常用的方法。
Python内容匹配的re模块
re模块是Python的正则表达式模块,有关正则表达式的。
函数 re.findall(pattern, string[, flags]):
从string中查找所有符合pattern正则表达式模式的子串,以这些子串作为列表元素返回一个列表。
参数说明:
pattern:要搜寻的正则表达式。
string:要检索的字符串。
flag:可选项,可设置搜索的要求。可以选择输入re.S,re.I等。
re.S:如果不使用re.S参数,则只在每一行内进行匹配,如果一行没有,就换下一行重新开始,不会跨行。而使用re.S参数以后,正则表达式会将这个字符串作为一个整体,将\n当做一个普通的字符加入到这个字符串中,在整体中进行匹配。
3.步骤:
1. URL处理模块(库)
import urllib.request as req
2.根据URL获取网页
url = 'http://www.gotonudt.cn/site/gfkdbkzsxxw/lqfs/index.html'
3. 创建一个表示远程url的类文件对象
req.urlopen('url ')
webpage = req.urlopen(url)
4. 读取网页的所有数据,并转换为uft-8编码
data = webpage.read().decode('utf-8')
print(data)
5.re模块是Python的正则表达式模块,调用此模块,从string中查找所有符合pattern正则表达式模式的子串,以这些子串作为列表元素返回一个列表。
import re
jpglist = re.findall(r'src="http.+?.jpg"',data)
6。对数据进一步选择,得到地址
for jpgurl in jpglist:
s = re.findall(r'http.+?.jpg',jpgurl)
print(s)
7.利用地址下载图片:
def downLoad(jpgUrl,n):
try:
request.urlretrieve(jpgUrl,'%s.jpg' %n)
except Exception as e:
print(e)
finally:
print('图片%s 下载操作完成' % n)
n=1
for jpgurl in jpglist:
s = re.findall(r'http.+?.jpg',jpgurl)
downLoad(s[0],n) #调用函数downLoad
n= n +1
8.完整代码如下:
import re
import urllib.request as req
url = 'http://www.daimg.com/'
webpage = req.urlopen(url)
data = webpage.read().decode('GB2312')
print(data)
jpglist = re.findall(r'src="http.+?.jpg"',data)
print(jpglist)
def downLoad(jpgUrl,n):
try:
request.urlretrieve(jpgUrl,'%s.jpg' %n)
except Exception as e:
print(e)
finally:
print('图片%s 下载操作完成' % n)
n=1
for jpgurl in jpglist:
s = re.findall(r'http.+?.jpg',jpgurl)
downLoad(s[0],n) #调用函数downLoad
n= n +1
网友评论