有一句话说的好:代码源于生活,服务于生活。需求赋予代码更多意义。于是这期我们就爬一下让人血脉喷张的海量妹子图吧!
我们这次爬取的是煎蛋网的妹子图
# url 链接
http://jandan.net/ooxx/
我们先审查一下元素,我们看到,这个链接中有猫腻!
我们看到这个page-
后面跟了一个数字。
我们右击图片检查一下:
img
标签里面带了这张图片的链接
好,接下来我们点查看原图
,看到的是一个新浪的链接:
http://wx4.sinaimg.cn/large/82e98952gy1fl73hl8t51j20zk0y1tih.jpg
我们简单的整理一下思路:
http://jandan.net/ooxx/page-222#comments
page-
后面这个数字的更改可以修改页面img
标签中的图片链接就能找到图片存放的链接封装url请求
def url_open(url):
head = {}
head['User-Agent'] = 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19'
req = request.Request(url, headers = head)
response = request.urlopen(req)
html = response.read()
return html
爬取http://jandan.net/ooxx/
页面span
中的页码,通过循环来爬取所有页面的妹子图。
def getpage(url):
html = url_open(url).decode('utf-8')
reg = r'\[([\s\S]+?)\]'
pattern= re.compile(reg)
tags= re.findall(pattern, html)
# 返回总页码
return tags[0]
用正则表达式过滤出图片链接
def find_imgs(url):
html = url_open(url).decode('utf-8')
reg = r''
pattern= re.compile(reg)
img_addrs= re.findall(pattern, html)
# 图片列表
print(img_addrs)
print("保存图片")
save_imgs(img_addrs)
将图片保存下来
def save_imgs(img_addrs):
count = 1
for each in img_addrs:
filename = each.split('/')[-1]
with open(filename,'wb') as f:
img = url_open("http:"+ each)
f.write(img)
print("成功写入图片%d张" %(count))
count += 1
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/11/5 11:56
# @Author : glacier
# @Site :
# @File : webSpider_meizi.py
# @Software: PyCharm Edu
import re
from urllib import request
from bs4 import BeautifulSoup
def url_open(url):
head = {}
head['User-Agent'] = 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19'
req = request.Request(url, headers = head)
response = request.urlopen(req)
html = response.read()
return html
def getpage(url):
html = url_open(url).decode('utf-8')
reg = r'\[([\s\S]+?)\]'
pattern= re.compile(reg)
tags= re.findall(pattern, html)
# 返回总页码
return tags[0]
def find_imgs(url):
html = url_open(url).decode('utf-8')
reg = r''
pattern= re.compile(reg)
img_addrs= re.findall(pattern, html)
# 图片列表
print(img_addrs)
print("保存图片")
save_imgs(img_addrs)
def save_imgs(img_addrs):
count = 1
for each in img_addrs:
filename = each.split('/')[-1]
with open(filename,'wb') as f:
img = url_open("http:"+ each)
f.write(img)
print("成功写入图片%d张" %(count))
count += 1
if __name__=='__main__':
url = 'http://jandan.net/ooxx/'
print("获取总页码")
pageNum = getpage(url)
for i in range(1,int(pageNum)):
print("拼接获取图片的 url...")
url = "http://jandan.net/ooxx/page-"+str(i)+"#comments"
find_imgs(url)
效果图:
咳咳,好像进来了奇怪的东西呢…..
原文链接:https://glacierbo.github.io/2017/11/05/Python_2/