果你仔细观察,就不难发现,懂爬虫、学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 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小时内与您取得联系。