Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
果你仔細(xì)觀察,就不難發(fā)現(xiàn),懂爬蟲、學(xué)習(xí)爬蟲的人越來越多,一方面,互聯(lián)網(wǎng)可以獲取的數(shù)據(jù)越來越多,另一方面,像 Python這樣的編程語言提供越來越多的優(yōu)秀工具,讓爬蟲變得簡(jiǎn)單、容易上手。
對(duì)于小白來說,爬蟲可能是一件非常復(fù)雜,技術(shù)門檻很高的事情,其實(shí)只要掌握正確方法,在短時(shí)間內(nèi)也是能夠做到精通的!這里給你一條平滑的,零基礎(chǔ)快速入門的學(xué)習(xí)路徑。
先來帶你簡(jiǎn)單的爬取一下網(wǎng)絡(luò)圖片:
1. 概述
本文主要實(shí)現(xiàn)一個(gè)簡(jiǎn)單的爬蟲,目的是從一個(gè)百度貼吧頁面下載圖片。下載圖片的步驟如下:
(1)獲取網(wǎng)頁html文本內(nèi)容;
(2)分析html中圖片的html標(biāo)簽特征,用正則解析出所有的圖片url鏈接列表;
(3)根據(jù)圖片的url鏈接列表將圖片下載到本地文件夾中。
如果你是零基礎(chǔ)小白,看不懂,沒關(guān)系!完整項(xiàng)目代碼+視頻使用教程+Python編程學(xué)習(xí)資料都給你帶走,有了這些 不怕你學(xué)不會(huì)! 不收取任何費(fèi)用哦
2. urllib+re實(shí)現(xiàn)
#!/usr/bin/python # coding:utf-8 # 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的爬蟲,爬取百度貼吧圖片 import urllib import re # 根據(jù)url獲取網(wǎng)頁html內(nèi)容 def getHtmlContent(url): page=urllib.urlopen(url) return page.read() # 從html中解析出所有jpg圖片的url # 百度貼吧html中jpg圖片的url格式為:<img ... src="XXX.jpg" width=...> def getJPGs(html): # 解析jpg圖片url的正則 jpgReg=re.compile(r'<img.+?src="(.+?\.jpg)" width') # 注:這里最后加一個(gè)'width'是為了提高匹配精確度 # 解析出jpg的url列表 jpgs=re.findall(jpgReg,html) return jpgs # 用圖片url下載圖片并保存成制定文件名 defdownloadJPG(imgUrl,fileName): urllib.urlretrieve(imgUrl,fileName) # 批量下載圖片,默認(rèn)保存到當(dāng)前目錄下 def batchDownloadJPGs(imgUrls,path='./'): # 用于給圖片命名 count=1 for url in imgUrls: downloadJPG(url,''.join([path,'{0}.jpg'.format(count)])) count=count + 1 # 封裝:從百度貼吧網(wǎng)頁下載圖片 def download(url): html=getHtmlContent(url) jpgs=getJPGs(html) batchDownloadJPGs(jpgs) def main(): url='http://tieba.baidu.com/p/2256306796' download(url) if __name__=='__main__': main()
運(yùn)行上面腳本,過幾秒種之后完成下載,可以在當(dāng)前目錄下看到圖片已經(jīng)下載好了:
3. requests + re實(shí)現(xiàn)
下面用requests庫實(shí)現(xiàn)下載,把getHtmlContent和downloadJPG函數(shù)都用requests重新實(shí)現(xiàn)。
#!/usr/bin/python # coding:utf-8 # 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的爬蟲,爬取百度貼吧圖片 import requests import re # 根據(jù)url獲取網(wǎng)頁html內(nèi)容 def getHtmlContent(url): page=requests.get(url): return page.text # 從html中解析出所有jpg圖片的url # 百度貼吧html中jpg圖片的url格式為:<img ... src="XXX.jpg" width=...> def getJPGs(html): # 解析jpg圖片url的正則 jpgReg=re.compile(r'<img.+?src="(.+?\.jpg)" width') # 注:這里最后加一個(gè)'width'是為了提高匹配精確度 # 解析出jpg的url列表 jpgs=re.findall(jpgReg,html) return jpgs # 用圖片url下載圖片并保存成制定文件名 def downloadJPG(imgUrl,fileName): # 可自動(dòng)關(guān)閉請(qǐng)求和響應(yīng)的模塊 from contextlib import closing with closing(requests.get(imgUrl,stream=True)) as resp: with open(fileName,'wb') as f: for chunk in resp.iter_content(128): f.write(chunk) # 批量下載圖片,默認(rèn)保存到當(dāng)前目錄下 defbatchDownloadJPGs(imgUrls,path='./'): # 用于給圖片命名 count=1 for url in imgUrls: downloadJPG(url,''.join([path,'{0}.jpg'.format(count)])) print '下載完成第{0}張圖片'.format(count) count=count + 1 # 封裝:從百度貼吧網(wǎng)頁下載圖片 def download(url): html=getHtmlContent(url) jpgs=getJPGs(html) batchDownloadJPGs(jpgs) def main(): url='http://tieba.baidu.com/p/2256306796' download(url) if __name__=='__main__': main()
輸出:和前面一樣。
十三天具體干什么?
第一天:
第二天:
第三天:
第四天:
第五天:
第六天:
第七天:
第八天:
第九天:
第十天:
第十一天:
第十二天:
第十三天:
每天三兩個(gè)小時(shí),13天輕松拿下python爬蟲,你就說牛不牛!溜不溜!
今天項(xiàng)目中牽涉到一個(gè)html圖片生成的需求,然后就發(fā)現(xiàn)了這個(gè)第三方的js -- html2canvas
PS: 附上官方使用文檔 http://html2canvas.hertzen.com/
①引入JS
可以在官方下載,也可以使用CDN
②在需要的html中指定操作元素
<div id="capture" style="padding:2rem;">
// your code ...
</div>
③調(diào)用指定的方法
export(){
html2canvas(document.querySelector("#capture")).then(canvas=> {
saveFile(canvas.toDataURL(),"ccc.png");
});
}
saveFile(data, filename){
const save_link=document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
save_link.href=data;
save_link.download=filename;
const event=document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
save_link.dispatchEvent(event);
};
in10系統(tǒng)的搜索功能相比于之前的系統(tǒng),已經(jīng)有了很大的提高,但是由于各種原因,有相當(dāng)一部分的電腦依然使用的是win7甚至更多老的操作系統(tǒng)。在進(jìn)行搜索時(shí),很容易卡死。學(xué)點(diǎn)python就可以把指定文件夾及子文件夾里的所有圖片都展示出來,并且能在瀏覽器上查看哦!
處理問題之前,先擼擼思路:
python程序讀取路徑文件及子文件夾里面的所有的文件 → 把指定格式的文件(圖片png/jpg)組合成瀏覽器可讀取的路徑格式 → 把路徑內(nèi)容寫入文件 → 文件保存為html格式
首先就是要引入處理本地文件的庫:os
下面這段代碼是讀取文件并且把讀取到的文件顯示出來,好讓你知道程序剛剛做了什么
下面再根據(jù)上面的原理,把讀取的文件組合成瀏覽器只可以讀取的路徑。為了保證讀取效率,一個(gè)html文件只保存500個(gè)圖片路徑。
python讀取本地文件夾及子文件夾的文件
下面就是運(yùn)行的效果
下面就是保存的html圖片文件,想讓圖片顯示多大就顯示多大
感覺有用,請(qǐng)關(guān)注我,Python實(shí)戰(zhàn)編程,為應(yīng)用而學(xué),我是【python陳】,分享各種實(shí)用性python技術(shù)源碼。
需要源碼文件,可以留言,或者私信我
haiyouhaohuo
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。