Python 爬蟲入門 (二) 使用Requests來爬取圖片
參考資料:
- 論一隻爬蟲的自我修養 http://blog.fishc.com/category/python/spider
- Requests: 讓 HTTP 服務人類 http://docs.python-requests.org/zh_CN/latest/
Requests庫使用方法與urrlib用法較為類似,但更為簡單,下面使用requests來進行圖片的抓取.
1. 先寫出主函式的程式碼
import requests
import os
import re
def download_mm(folder='mmImages', pages=10):
"""
下載十個頁面的圖片,並將其儲存進folder目錄
"""
#建立儲存圖片的資料夾
os.mkdir('folder')
os.chdir('folder')
#下載圖片頁面初始地址
url = 'http://jandan.net/ooxx/'
#圖片頁面地址全名為http://jandan.net/ooxx/page-2364#comments,可看出圖片地址為'url'+'頁面數'+ '#comments',先定義一個函式get_page(url)來獲取page_num
page_num = int(get_page(url))
#有了圖片所在頁面的全名地址就可以爬取圖片的源地址了,這裡我們僅下載十個頁面的圖片
for i in range(pages):
page_num -= i
#獲得十個網頁的圖片地址,進入頁面時我們處於最新頁面,因此最終得到的是此頁以及前九頁的地址
page_url = url+'page-'+str(page_num)+'#comments'
#獲得多個圖片網址後還需獲得每一個圖片的源地址才能下載到每一張圖片,此處定義一個函式find_images來獲取每張圖片源地址
img_addrs = find_images(page_url)
#從每張圖片源地址下載圖片到folder資料夾
save_imgs(folder, img_addrs)
2. 編寫在主函式中需要用到的功能函式的程式碼
(1)先在url = 'http://jandan.net/ooxx/' 頁面爬出最新頁面數(即page_num)
def get_page(url):
"""
返回單前網頁page數,也即url = 'http://jandan.net/ooxx/'的page數
"""
#爬取html頁面內容
html= url_open(url).text
#找出含有本頁網址的那一段字串
page=re.search(r'>\[[0-9]{4}\]<',html).group()
#從這一段字串提取出頁面數
page_number=re.search(r'[0-9]{4}',page).group()
return page_number
(2)主函式中利用for迴圈拼接出十個頁面的url,然後利用find_images函式找出每一個頁面的的每一張圖片的源地址
def find_images(url):
"""
找到圖片的源地址
"""
#爬取當前html頁面內容
html=url_open(url).text
#找出包含圖片源地址的這一段字串
img_src0=re.findall(r'<img\ssrc=.{,80}.[jpg|png|gif]',html)
#從包含圖片源地址的這一段字串中提取圖片的源地址
img_src1=[img_src[10:] for img_src in img_src0]
return img_src1
(3)找出圖片源地址後利用再去下載圖片
def save_imgs(folder, img_addrs):
"""
儲存圖片
"""
for img_addr in img_addrs:
#將圖片地址的倒數第二個字串作為圖片名
filename=img_addr.split('/')[-1]
#以二進位制的方式(content而非text)儲存圖片源地址內容
img=url_open('http:{}'.format(img_addr)).content
with open(filename,'wb') as f:
f.write(img)
(4)由於開啟網頁這一步被反覆用到,因此可編寫一個函式直接呼叫即可
def url_open(url):
"""
爬取網頁
"""
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
req = requests.get(url,headers=headers)
return req
3.總結
(1)在這個爬蟲程式中我們想要爬取多個頁面內容,因此需要找出這些頁面地址的關聯,否則只能一個個輸入地址來爬取,因此一開始我們需要先爬取第一個頁面對其html內容進行分析,找出page_num.
(2)找出規律後利用一個簡單的迴圈便可以爬取多個頁面.
(3)對於每一個含有多個圖片的頁面,需要分析爬取每一張圖片的地址才能進行下載
(4)爬取到圖片源地址後便可以進行下載(爬取網頁並以二進位制方式儲存)
(5)編寫程式碼的過程中應儘量使得每一個函式僅執行一個功能,如此既方便呼叫出錯時也方便除錯查詢bug.
4. 利用requests實現Python爬蟲入門 (一)中以urllib編寫的 互動式有道翻譯請求:
import requests
import json
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=https://www.google.com.hk/'
data = dict()
data = dict()
data['type'] = 'AUTO'
data['i'] = input("Plz input what you want to translate: ")
data['doctype'] = 'json'
data['xmlVersion'] = '1.8'
data['keyfrom'] = 'fanyi.web'
data['ue'] = 'UTF-8'
data['action'] = 'FY_BY_CLICKBUTTON'
data['typoResult'] = 'true'
r = requests.post(url, data=data)
trans_response = r.json()['translateResult'][0][0]['tgt']
print('翻譯結果: ', trans_response)
相關文章
- Python爬蟲入門【5】:27270圖片爬取Python爬蟲
- Python爬蟲入門【4】:美空網未登入圖片爬取Python爬蟲
- python入門012~使用requests爬取網路圖片並儲存到本地Python
- Python爬蟲入門【7】: 蜂鳥網圖片爬取之二Python爬蟲
- Python爬蟲—爬取某網站圖片Python爬蟲網站
- python 爬蟲之requests爬取頁面圖片的url,並將圖片下載到本地Python爬蟲
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- Python爬蟲入門教程 4-100 美空網未登入圖片爬取Python爬蟲
- Python爬蟲入門【9】:圖蟲網多執行緒爬取Python爬蟲執行緒
- Python爬蟲入門【11】:半次元COS圖爬取Python爬蟲
- Java爬蟲批量爬取圖片Java爬蟲
- Python 爬蟲實戰(二):使用 requests-htmlPython爬蟲HTML
- Python爬蟲入門【8】: 蜂鳥網圖片爬取之三Python爬蟲
- Python爬蟲入門【6】:蜂鳥網圖片爬取之一Python爬蟲
- Python爬蟲實戰詳解:爬取圖片之家Python爬蟲
- Python爬蟲入門教程 2-100 妹子圖網站爬取Python爬蟲網站
- 爬蟲---xpath解析(爬取美女圖片)爬蟲
- node:爬蟲爬取網頁圖片爬蟲網頁
- Python爬蟲新手教程: 知乎文章圖片爬取器Python爬蟲
- Python爬蟲遞迴呼叫爬取動漫美女圖片Python爬蟲遞迴
- Python網路爬蟲2 - 爬取新浪微博使用者圖片Python爬蟲
- Python爬蟲入門教程 50-100 Python3爬蟲爬取VIP視訊-Python爬蟲6操作Python爬蟲
- 爬蟲 Scrapy框架 爬取圖蟲圖片並下載爬蟲框架
- Python爬蟲入門Python爬蟲
- Python爬蟲神器requests庫的使用Python爬蟲
- 新手爬蟲教程:Python爬取知乎文章中的圖片爬蟲Python
- 【python--爬蟲】千圖網高清背景圖片爬蟲Python爬蟲
- Python爬蟲入門【3】:美空網資料爬取Python爬蟲
- python爬蟲requests模組Python爬蟲
- Python爬蟲入門教程 8-100 蜂鳥網圖片爬取之三Python爬蟲
- 【爬蟲】python爬蟲從入門到放棄爬蟲Python
- python-爬蟲入門Python爬蟲
- 什麼是Python爬蟲?python爬蟲入門難嗎?Python爬蟲
- 爬蟲Selenium+PhantomJS爬取動態網站圖片資訊(Python)爬蟲JS網站Python
- Python爬蟲入門教程 18-100 煎蛋網XXOO圖片抓取Python爬蟲
- Python爬蟲入門【10】:電子書多執行緒爬取Python爬蟲執行緒
- 網路爬蟲---從千圖網爬取圖片到本地爬蟲
- 爬蟲入門基礎-Python爬蟲Python
- python3 爬蟲入門Python爬蟲