(二)Python 学习第二天--爬5068动漫图库小案例
生活随笔
收集整理的這篇文章主要介紹了
(二)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方法來下載資源。
?
?
轉載于:https://www.cnblogs.com/guozhengxin/p/6957154.html
總結
以上是生活随笔為你收集整理的(二)Python 学习第二天--爬5068动漫图库小案例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 组件中props参数的应用
- 下一篇: 向EXECL文件中导入数据的同时插入图片