果你仔細觀察,就不難發現,懂爬蟲、學習爬蟲的人越來越多,一方面,互聯網可以獲取的數據越來越多,另一方面,像 Python這樣的編程語言提供越來越多的優秀工具,讓爬蟲變得簡單、容易上手。
對于小白來說,爬蟲可能是一件非常復雜,技術門檻很高的事情,其實只要掌握正確方法,在短時間內也是能夠做到精通的!這里給你一條平滑的,零基礎快速入門的學習路徑。
先來帶你簡單的爬取一下網絡圖片:
1. 概述
本文主要實現一個簡單的爬蟲,目的是從一個百度貼吧頁面下載圖片。下載圖片的步驟如下:
(1)獲取網頁html文本內容;
(2)分析html中圖片的html標簽特征,用正則解析出所有的圖片url鏈接列表;
(3)根據圖片的url鏈接列表將圖片下載到本地文件夾中。
如果你是零基礎小白,看不懂,沒關系!完整項目代碼+視頻使用教程+Python編程學習資料都給你帶走,有了這些 不怕你學不會! 不收取任何費用哦
2. urllib+re實現
#!/usr/bin/python # coding:utf-8 # 實現一個簡單的爬蟲,爬取百度貼吧圖片 import urllib import re # 根據url獲取網頁html內容 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') # 注:這里最后加一個'width'是為了提高匹配精確度 # 解析出jpg的url列表 jpgs=re.findall(jpgReg,html) return jpgs # 用圖片url下載圖片并保存成制定文件名 defdownloadJPG(imgUrl,fileName): urllib.urlretrieve(imgUrl,fileName) # 批量下載圖片,默認保存到當前目錄下 def batchDownloadJPGs(imgUrls,path='./'): # 用于給圖片命名 count=1 for url in imgUrls: downloadJPG(url,''.join([path,'{0}.jpg'.format(count)])) count=count + 1 # 封裝:從百度貼吧網頁下載圖片 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()
運行上面腳本,過幾秒種之后完成下載,可以在當前目錄下看到圖片已經下載好了:
3. requests + re實現
下面用requests庫實現下載,把getHtmlContent和downloadJPG函數都用requests重新實現。
#!/usr/bin/python # coding:utf-8 # 實現一個簡單的爬蟲,爬取百度貼吧圖片 import requests import re # 根據url獲取網頁html內容 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') # 注:這里最后加一個'width'是為了提高匹配精確度 # 解析出jpg的url列表 jpgs=re.findall(jpgReg,html) return jpgs # 用圖片url下載圖片并保存成制定文件名 def downloadJPG(imgUrl,fileName): # 可自動關閉請求和響應的模塊 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) # 批量下載圖片,默認保存到當前目錄下 defbatchDownloadJPGs(imgUrls,path='./'): # 用于給圖片命名 count=1 for url in imgUrls: downloadJPG(url,''.join([path,'{0}.jpg'.format(count)])) print '下載完成第{0}張圖片'.format(count) count=count + 1 # 封裝:從百度貼吧網頁下載圖片 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()
輸出:和前面一樣。
十三天具體干什么?
第一天:
第二天:
第三天:
第四天:
第五天:
第六天:
第七天:
第八天:
第九天:
第十天:
第十一天:
第十二天:
第十三天:
每天三兩個小時,13天輕松拿下python爬蟲,你就說牛不牛!溜不溜!
今天項目中牽涉到一個html圖片生成的需求,然后就發現了這個第三方的js -- html2canvas
PS: 附上官方使用文檔 http://html2canvas.hertzen.com/
①引入JS
可以在官方下載,也可以使用CDN
②在需要的html中指定操作元素
<div id="capture" style="padding:2rem;">
// your code ...
</div>
③調用指定的方法
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系統的搜索功能相比于之前的系統,已經有了很大的提高,但是由于各種原因,有相當一部分的電腦依然使用的是win7甚至更多老的操作系統。在進行搜索時,很容易卡死。學點python就可以把指定文件夾及子文件夾里的所有圖片都展示出來,并且能在瀏覽器上查看哦!
處理問題之前,先擼擼思路:
python程序讀取路徑文件及子文件夾里面的所有的文件 → 把指定格式的文件(圖片png/jpg)組合成瀏覽器可讀取的路徑格式 → 把路徑內容寫入文件 → 文件保存為html格式
首先就是要引入處理本地文件的庫:os
下面這段代碼是讀取文件并且把讀取到的文件顯示出來,好讓你知道程序剛剛做了什么
下面再根據上面的原理,把讀取的文件組合成瀏覽器只可以讀取的路徑。為了保證讀取效率,一個html文件只保存500個圖片路徑。
python讀取本地文件夾及子文件夾的文件
下面就是運行的效果
下面就是保存的html圖片文件,想讓圖片顯示多大就顯示多大
感覺有用,請關注我,Python實戰編程,為應用而學,我是【python陳】,分享各種實用性python技術源碼。
需要源碼文件,可以留言,或者私信我
haiyouhaohuo
*請認真填寫需求信息,我們會在24小時內與您取得聯系。