前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理
如果大家想要完成爬虫程序,先安装和导入几个包
- requests 网络库
- bs4 页面选择器 网页上筛选数据
安装包
- pip install requests
- pip install bs4
os python语言自带的一个工具库
ssl工具包 https协议的网站是基于ssl加密从而传输数据的一种网站
一般爬虫的过程
- 模拟浏览器
- 强制取消证书认证 看情况去做的 http的协议网站 则不需要
- requests去做http请求,并且拿到网页数据
- 数据筛选 拿到我们想要的数据
- 下载
本次目标
爬取堆糖网图片
<code><span class="hljs-attribute">https:<span class="hljs-comment">//www.duitang.com/</span></span></code>
www#gaodaima.com来源gaodai#ma#com搞*!代#%^码网搞代码
爬虫代码
导入工具
<span>import</span><span> ssl </span><span>import</span><span> os </span><span>#</span><span> 下载包</span> <span>import</span><span> urllib.request </span><span>#</span><span> 网络包</span> <span>import</span><span> requests </span><span>#</span><span> 网页选择器</span> <span>from</span> bs4 <span>import</span> BeautifulSoup
请求头
headers =<span> { </span><span>"</span><span>User-Agent</span><span>"</span><span>: </span><span>"</span><span>Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36</span><span>"</span><span> }</span>
默认请求https网站不需要证书认证
ssl._create_default_https_context = ssl._create_unverified_context
爬虫流程
<span>def</span><span> get_images(url): images_html </span>= requests.get(url, headers=<span>headers).text </span><span>#</span><span> print(images_html)</span> soup = BeautifulSoup(images_html, <span>"</span><span>lxml</span><span>"</span><span>) images_list </span>= soup.find_all(<span>"</span><span>div</span><span>"</span>, class_=<span>"</span><span>mbpho</span><span>"</span><span>) </span><span>#</span><span> print(images_list)</span> <span>for</span> image <span>in</span><span> images_list: image_data </span>= image.find(<span>"</span><span>a</span><span>"</span>, class_=<span>"</span><span>a</span><span>"</span><span>) image_url </span>= image_data.find(<span>"</span><span>img</span><span>"</span>)[<span>"</span><span>src</span><span>"</span><span>] </span><span>#</span><span> 获取图片名称 下载图片时需要给图片文件一个文件名</span> image_id = image_data.find(<span>"</span><span>img</span><span>"</span>)[<span>"</span><span>data-rootid</span><span>"</span><span>] </span><span>#</span><span> print(image_url, image_id)</span> <span>print</span>(os.path.splitext(image_url)[-1<span>]) </span><span>try</span><span>: urllib.request.urlretrieve(image_url, </span><span>"</span><span>./古风头像/</span><span>"</span> + image_id + os.path.splitext(image_url)[-1<span>]) </span><span>print</span>(<span>"</span><span>下载成功...</span><span>"</span><span>) </span><span>except</span><span>: </span><span>pass</span><span> url </span>= <span>"</span><span>https://www.duitang.com/search/?kw=%E5%8F%A4%E9%A3%8E%E5%A4%B4%E5%83%8F&type=feed</span><span>"</span><span> get_images(url)</span>
效果图