写在前面
前不久,公众号后台有妹子不高兴了,私信我说,我为什么会觉得我公众号的人都是喜欢看性感女人呢?什么时候发发性感男人啊。
想想也是,毕竟关注这个公众号有 15.6% 是妹纸呢。怎么能没有性感男人呢?
那么接下来就把你想要的帅哥,用 Python 把它们装进自己的电脑。
刚好看到这个地址:http://www.shuaige5.com/tag/xinggannanren/ ,发现里面的性感男人真的很性感。
答应我,先别激动好么?
分析帅哥图片地址
首先来分析一下我们要爬取的这些图片地址,通过 Chrome 的开发者工具可以看到这些图片的地址在 img 标签中,但是这个地址有点奇怪,在 src 里面还有一个 src 指向图片的地址,我们要的图片地址就是在第二个 src 指向的地址,所以我们的正则应该是这样:
1
| '<div class="inner_wrapper_img inner_wrapper_img1">.*?<img.*?src="/e/ext.*?src=(.*?)&h=240&w=190&zc=1".*?</div>'
|
当我们要点击下一页的时候呢,可以发现请求地址携带了一个参数 /index_2.html
,所以我们可以通过这个变量来获取多页的图片数据。
爬取性感男人图片
那么分析完之后我们就开始下手吧,我们可以创建一个叫做 shuaige 的图片文件夹,专门来放这些帅哥的
1 2
| os.mkdir(dirName) os.chdir(dirName)
|
接着我们可以定义几个变量:
1 2 3
| pageNumber = 2 #用于获取不同页数的图片 x = 0 #用于图片名称 img_address = [] #存放爬取到的图片地址
|
比如我们想要获取第 2 到第 4 张图片,那么我们就可以写一个循环来获取数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| while pageNumber < 5 : page_url = url + '/index_'+str(pageNumber)+'.html' addrs = find_imgs(page_url)
for i in addrs: if i in img_address : continue else: img_address.append(i)
pageNumber += 1
for each in img_address: filename = str(x) + ".jpg" x+=1 with open(filename,'wb') as f: img = url_open(each).content f.write(img)
|
ok,我们来运行一下,可以看到在我们的项目目录中创建了一个叫做 shuaige 的文件夹,python 正在下载我们要爬取的图片:
打开文件夹一看,一堆性感男人都有了:
友情提示:小爬怡情,大爬伤身!
完整代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| import os import re import requests
def url_open(url):
header = { 'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0" } response = requests.get(url, headers=header) return response
def find_imgs(url): html = url_open(url).text pattern = re.compile('<div class="inner_wrapper_img inner_wrapper_img1">.*?<img.*?src="/e/ext.*?src=(.*?)&h=240&w=190&zc=1".*?</div>',re.S) img_addrs = re.findall(pattern, html)
return img_addrs
def download_shuaige(dirName="shuaige"): os.mkdir(dirName) os.chdir(dirName)
pageNumber = 2 x = 0 img_address = []
while pageNumber < 5 : page_url = url + '/index_'+str(pageNumber)+'.html' addrs = find_imgs(page_url) print(len(addrs))
for i in addrs: if i in img_address : continue else: img_address.append(i) print(len(img_address)) for each in img_address: print(each)
pageNumber += 1
for each in img_address: filename = str(x) + ".jpg" x+=1 with open(filename,'wb') as f: img = url_open(each).content f.write(img)
if __name__ == '__main__': url = "http://www.shuaige5.com/tag/xinggannanren" download_shuaige()
|
相关
在公众号「帅彬老仙」发送「帅书」领取我写的技术电子书,转载请注明出处:
wistbean