爬虫的知识点有点忘记了,做个小练习复习一个。
题目
'''
抓取腾讯主页中的图片到本地
1. 抓取网页
2. 抓取图片地址
3. 抓取图片内容并保存到本地
'''
代码
import re
import requests
import os
from urllib.request import urlretrieve
#访问腾讯首页
response = requests.get('http://www.qq.com/')
#获取完整的html
content = response.text
#正则找到所有src属性对应的链接
links = re.findall(r'src="(.*?)"',content)
##print(links)
#找到所有有效的链接
valid_links = []
for link in links:
if link.endswith('.js') or link.endswith('.css'):
continue
#url中没有http时手动补充
if not link.startswith('http'):
valid_links.append("http:"+link)
#新建image文件夹
if not os.path.exists("image"):
os.mkdir('image')
#将图片内容保存到image文件夹
i = 0
for link in valid_links:
print(link)
urlretrieve(link,'image\\%s.jpg'%i)
i += 1
执行结果
注意:
1.正则直接匹配.png或者.jpg的话,会有问题,因为会有图片的url结尾是数字的情况,这样匹配出来的是两个src之间的内容,这并不是我们想要的。所以采用折中的办法,现将src中所有的链接匹配出来,然后将后缀为.js/.css等内容忽略掉即可
2.html源码中的链接有的带http:有的不带,需要判断,没有的话要手动添加,这样才能访问正确的url