(二)Python 学习第二天--爬5068动漫图库小案例
(注:代码和网站仅仅是学习用途,非营利行为,源代码参考网上大神代码,仅仅用来学习😊)
效果如下:

代码展示如下
# -*- coding:utf-8 -*
import urllib2
from bs4 import BeautifulSoup
import urllib
def get_images(page_s, page_e=None) :
if page_e == None :
page_e = page_s
pic_name = 1
for i in range(page_s,page_e+1) :
url = 'http://es.5068.com/list_96_%s.html'%i
header = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
req =urllib2.Request(url, headers=header)
page = urllib2.urlopen(req, timeout=50)
contents = page.read()
soup = BeautifulSoup(contents,'html.parser')
my_pic = soup.find_all('img')
for pic in my_pic :
link = pic.get('src')
name = link[link.rfind('/')+1:]
data = urllib.urlretrieve(link,'images/%s'%name)
#print link, name
get_images(1,3)
学习记录如下:
功能:实现一个可以爬取5068图片网站的爬虫函数,主要使用模块urllib,urllib2,BeautifulSoup4 实验环境:python2.7
1.urllib2是Python的一个获取URLs(Uniform Resource Locators)的组件。他以urlopen函数的形式提供了一个非常简单的接口,这是具有利用不同协议获取URLs的能力,他同样提供了一个比较复杂的接口来处理一般情况,例如:基础验证,cookies,代理和其他。它们通过handlers和openers的对象提供。
2.urllib2用一个Request对象来映射你提出的HTTP请求,在它最简单的使用形式中你将用你要请求的地址创建一个Request对象,通过调用urlopen并传入Request对象,将返回一个相关请求response对象,在这里我们设置对象名为page,这个应答对象如同一个文件对象,所以你可以在Page中调用.read()。
3.由于部分网站有反爬机制,所以设置header文件,server端会针对这些header做检查,利用本地浏览器的User-Agent来伪装成浏览器发起的Request
4.Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。
Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。
5.soup = BeautifulSoup(contents,'html.parser'),标准化html内容
6.调用find_all()方法来,获得所有的img标签
get():来获得所有img标签中的src部分
7.python中使用urllib模块中的urlretrieve方法来下载资源。

浙公网安备 33010602011771号