网络爬虫(爬取网站图片,自动保存本地)

事先申明一点,这个人品没有什么问题,只是朋友发一段python源码,再这里分享大家。

 1 import requests
 2 from lxml import html
 3 import os
 4 from multiprocessing.dummy import Pool as ThreadPool
 5
 6 def header(referer):
 7     headers = {
 8         ‘Host‘: ‘i.meizitu.net‘,
 9         ‘Pragma‘: ‘no-cache‘,
10         ‘Accept-Encoding‘: ‘gzip, deflate‘,
11         ‘Accept-Language‘: ‘zh-CN,zh;q=0.8,en;q=0.6‘,
12         ‘Cache-Control‘: ‘no-cache‘,
13         ‘Connection‘: ‘keep-alive‘,
14         ‘User-Agent‘: ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) ‘
15                       ‘Chrome/59.0.3071.115 Safari/537.36‘,
16         ‘Accept‘: ‘image/webp,image/apng,image/*,*/*;q=0.8‘,
17         ‘Referer‘: ‘{}‘.format(referer),
18     }
19     return headers
20
21 # 获取主页列表
22 def getPage(pageNum):
23     baseUrl = ‘http://www.mzitu.com/page/{}‘.format(pageNum)
24     selector = html.fromstring(requests.get(baseUrl).content)
25     urls = []
26     for i in selector.xpath(‘//ul[@id="pins"]/li/a/@href‘):
27         urls.append(i)
28         print(i)
29     return urls
30
31
32 # 图片链接列表, 标题
33 # url是详情页链接
34 def getPiclink(url):
35     sel = html.fromstring(requests.get(url).content)
36     # 图片总数
37     total = sel.xpath(‘//div[@class="pagenavi"]/a[last()-1]/span/text()‘)[0]
38     # 标题
39     title = sel.xpath(‘//h2[@class="main-title"]/text()‘)[0]
40     # 文件夹格式
41     dirName = u"【{}P】{}".format(total, title)
42     # 新建文件夹
43     os.mkdir(dirName)
44
45     n = 1
46     for i in range(int(total)):
47         # 每一页
48         try:
49             link = ‘{}/{}‘.format(url, i+1)
50             s = html.fromstring(requests.get(link).content)
51             # 图片地址在src标签中
52             jpgLink = s.xpath(‘//div[@class="main-image"]/p/a/img/@src‘)[0]
53             # print(jpgLink)
54             # 文件写入的名称:当前路径/文件夹/文件名
55             filename = ‘%s/%s/%s.jpg‘ % (os.path.abspath(‘.‘), dirName, n)
56             print(u‘开始下载图片:%s 第%s张‘ % (dirName, n))
57             with open(filename, "wb+") as jpg:
58                 jpg.write(requests.get(jpgLink, headers=header(jpgLink)).content)
59             n += 1
60         except:
61             pass
62
63
64 if __name__ == ‘__main__‘:
65     pageNum = input(u‘请输入页码:‘)
66     p = getPage(pageNum)
67     with ThreadPool(4) as pool:
68         pool.map(getPiclink, p)    

至于爬出出来的效果图,我就不发布了

原文地址:https://www.cnblogs.com/chenyanlong/p/9124217.html

时间: 2024-08-29 21:50:37

网络爬虫(爬取网站图片,自动保存本地)的相关文章

python爬虫爬取美女图片

python 爬虫爬取美女图片 #coding=utf-8 import urllib import re import os import time import threading def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def getImgUrl(html,src): srcre = re.compile(src) srclist = re.findall(srcre,html)

如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py文件.我们需要获取的数据是朋友圈和发布日期,因此在这里定义好日期和动态两个属性,如下图所示. 2.修改实现爬虫逻辑的主文件moment.py,首先要导入模块,尤其是要主要将items.py中的WeixinMomentItem类导入进来,这点要特别小心别被遗漏了.之后修改start_requests方

如何使用robots禁止各大搜索引擎爬虫爬取网站

ps:由于公司网站配置的测试环境被百度爬虫抓取,干扰了线上正常环境的使用,刚好看到每次搜索淘宝时,都会有一句由于robots.txt文件存在限制指令无法提供内容描述,于是便去学习了一波 1.原来一般来说搜索引擎爬取网站时都会,先读取下robots.txt文件,并依照里面所设定的规则去爬取网站(当然是指没用登录限制的页面) 2.下面我们就来说一说如何设置robots.txt文件 1).robots.txt文件必须是放在文件根目录上: 例如: ├─admin │  └─templates │    

Python爬虫——爬取网站的图片

爬虫这东西最早出现在我大学计算机网络的课程上面,我们当时的老师人很好,期末不笔试,他说这东西笔试没什么用,对于一个年纪比较大的老师来讲,能提出这种方式,实在难得.当时在考虑做一个与网络有关的东西好,第一个想到的就是爬虫.想想也没想过用Java写过这种东西,所以当时是一般看一本爬虫的书一边敲代码,现在想起来有很多东西是没有想明白的--我当时爬的是刘末鹏的博客,把全部文章用分类爬了下来,在本地可以打开. 后面老师评价的时候就说,你这个只能爬这个,其实你应该让他智能些,让他可以爬图片,可以爬特定的内容

使用selenium实现简单网络爬虫抓取MM图片

撸主听说有个网站叫他趣,里面有个社区,其中有一项叫他趣girl,撸主点进去看了下,还真不错啊,图文并茂,宅男们自己去看看就知道啦~ 接下来当然就是爬取这些妹子的图片啦,不仅仅是图片,撸主发现里面的对话也很有意思,于是把对话也一并抓取下来好了. 那么问题来了,用什么工具呢?在之前的练习中已经用过urllib2,正则表达式匹配实在麻烦,这次来点稍微高级的,试试selenium: selenium是什么?其实它是一个web自动化测试的工具,运行起来就跟我们自己操作浏览器差不多,废话不多说,下面开始.

网络爬虫爬取邮箱,并将其存入xml中作为数据库

package com.bjsxt.ly; import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Unsuppo

如何用Python网络爬虫爬取网易云音乐歌词

前几天小编给大家分享了数据可视化分析,在文尾提及了网易云音乐歌词爬取,今天小编给大家分享网易云音乐歌词爬取方法. 本文的总体思路如下: 找到正确的URL,获取源码: 利用bs4解析源码,获取歌曲名和歌曲ID: 调用网易云歌曲API,获取歌词: 将歌词写入文件,并存入本地. 本文的目的是获取网易云音乐的歌词,并将歌词存入到本地文件.整体的效果图如下所示: 基于Python网易云音乐歌词爬取 赵雷的歌曲 本文以民谣歌神赵雷为数据采集对象,专门采集他的歌曲歌词,其他歌手的歌词采集方式可以类推,下图展示

Python爬虫爬取网页图片

没想到python是如此强大,令人着迷,以前看见图片总是一张一张复制粘贴,现在好了,学会python就可以用程序将一张张图片,保存下来. 今天逛贴吧看见好多美图,可是图片有点多,不想一张一张地复制粘贴,怎么办呢?办法总是有的,即便没有我们也可以创造一个办法. 下面就看看我今天写的程序: #coding=utf-8 #urllib模块提供了读取Web页面数据的接口 import urllib #re模块主要包含了正则表达式 import re #定义一个getHtml()函数 def getHtm

通过wireshark获取应用接口并使用爬虫爬取网站数据(二)

接上文 找到接口之后连续查看了几个图片,结果发现图片都很小,于是用手机下载了一个用wireshark查看了一下url 之前接口的是 imges_min下载的时候变成了images soga,知道之后立马试了一下 果然有效, 但是总不能一个一个的查看下载吧 于是连夜写了个java爬虫 下面是代码 package com.feng.main; import java.io.File; import java.io.FileOutputStream; import java.io.IOExceptio