今天"无意"看美女无意溜达到一个网站,发现妹子多多,但是可恨一个page只显示一张或两张图片,家里WiFi也难用,于是发挥"程序猿"的本色,写个小脚本,把图片扒下来再看,类似功能已有不少大师实现了,但本着学习锻炼的精神,自己折腾一遍,涨涨姿势!

先来效果展示下:

python代码:

# -*- coding:utf8 -*-
import urllib2
import re
import requests
from lxml import etree
import os def check_save_path(save_path):
try:
os.mkdir(save_path)
except:
pass def get_image_name(image_link):
file_name = os.path.basename(image_link)
return file_name def save_image(image_link, save_path):
file_name = get_image_name(image_link)
file_path = save_path + "\\" + file_name
print("准备下载%s" % image_link)
try:
file_handler = open(file_path, "wb")
image_handler = urllib2.urlopen(url=image_link, timeout=5).read()
file_handler.write(image_handler)
file_handler.closed()
except Exception, ex:
print(ex.message) def get_image_link_from_web_page(web_page_link):
image_link_list = []
print(web_page_link)
try:
html_content = urllib2.urlopen(url=web_page_link, timeout=5).read()
html_tree = etree.HTML(html_content)
print(str(html_tree))
link_list = html_tree.xpath('//p/img/@src')
for link in link_list:
# print(link)
if str(link).find("uploadfile"):
image_link_list.append("http://www.xgyw.cc/" + link)
except Exception, ex:
pass
return image_link_list def get_page_link_list_from_index_page(base_page_link):
try:
html_content = urllib2.urlopen(url=base_page_link, timeout=5).read()
html_tree = etree.HTML(html_content)
print(str(html_tree))
link_tmp_list = html_tree.xpath('//div[@class="page"]/a/@href')
page_link_list = []
for link_tmp in link_tmp_list:
page_link_list.append("http://www.xgyw.cc/" + link_tmp)
return page_link_list
except Exception, ex:
print(ex.message)
return [] def get_page_title_from_index_page(base_page_link):
try:
html_content = urllib2.urlopen(url=base_page_link, timeout=5).read()
html_tree = etree.HTML(html_content)
print(str(html_tree))
page_title_list = html_tree.xpath('//td/div[@class="title"]')
page_title_tmp = page_title_list[0].text
print(page_title_tmp)
return page_title_tmp
except Exception, ex:
print(ex.message)
return "" def get_image_from_web(base_page_link, save_path):
check_save_path(save_path)
page_link_list = get_page_link_list_from_index_page(base_page_link)
for page_link in page_link_list:
image_link_list = get_image_link_from_web_page(page_link)
for image_link in image_link_list:
save_image(image_link, save_path) base_page_link = "http://www.xgyw.cc/tuigirl/tuigirl1346.html"
page_title = get_page_title_from_index_page(base_page_link)
if page_title <> "":
save_path = "N:\\PIC\\" + page_title
else:
save_path = "N:\\PIC\\other\\" get_image_from_web(base_page_link, save_path)

代码思路:

使用urllib2.urlopen(url).open来获取页面数据,再使用etree.HTML()将页面解析成xml格式,方便使用xmlpath方式来获取特定node的值,最终遍历所有页面得到要下载的图片,将图片保存到本地。

--=========================================================

python包安装:

很多python包没有windows安装包,或者没有X64版本的安装包,对于新手来说,很难快速上手,可以使用pip或easy_install来安装要使用的安装包,相关安装方式:https://pypi.python.org/pypi/setuptools

本人采用easy_install方式,我电脑安装python2.7,安装路径为:C:\Python27\python.exe,下载ez_setup.py文件后到c盘保存,然后运行cmd执行以下命令:

C:\Python27\python.exe "c:\ez_setup.py"

即可安装easy_install,安装结束后可以C:\Python27\Scripts下看到easy_install-2.7.exe,如果我们想在本地安装requests包,那么可以运行以下命令来试下:

"C:\Python27\Scripts\easy_install-2.7.exe" requests

--==========================================================

依旧是妹子压贴,推女郎第68期,想要图的自己百度

使用python来批量抓取网站图片的更多相关文章

  1. Python入门-编写抓取网站图片的爬虫-正则表达式

    //生命太短 我用Python! //Python真是让一直用c++的村里孩子长知识了! 这个仅仅是一个测试,成功抓取了某网站1000多张图片. 下一步要做一个大新闻 大工程 #config = ut ...

  2. python网络爬虫抓取网站图片

    本文介绍两种爬取方式: 1.正则表达式 2.bs4解析Html 以下为正则表达式爬虫,面向对象封装后的代码如下: import urllib.request # 用于下载图片 import os im ...

  3. Python3利用BeautifulSoup4批量抓取站点图片的代码

    边学边写代码,记录下来.这段代码用于批量抓取主站下所有子网页中符合特定尺寸要求的的图片文件,支持中断. 原理很简单:使用BeautifulSoup4分析网页,获取网页<a/>和<im ...

  4. php远程抓取网站图片并保存

    以前看到网上别人说写程序抓取网页图片的,感觉挺神奇,心想什么时候我自己也写一个抓取图片的方法! 刚好这两天没什么事,就参考了网上一个php抓取图片代码,重点借鉴了 匹配img标签和其src属性正则的写 ...

  5. python爬虫批量抓取ip代理

    使用爬虫抓取数据时,经常要用到多个ip代理,防止单个ip访问太过频繁被封禁.ip代理可以从这个网站获取:http://www.xicidaili.com/nn/.因此写一个python程序来获取ip代 ...

  6. 【Python】批量爬取网站URL测试Struts2-045漏洞

    1.概述都懒得写了.... 就是批量测试用的,什么工具里扣出来的POC,然后根据自己的理解写了个爬网站首页URL的代码... #!/usr/bin/env python # -*- coding: u ...

  7. Python -- 网络编程 -- 抓取网页图片 -- 豆瓣妹子

    首先分析页面URL,形如http://dbmeizi.com/category/[1-14]?p=[0-476] 图片种类对应编号: 1:'性感', 2:'有沟', 3:'美腿', 4:'小露点', ...

  8. Python -- 网络编程 -- 抓取网页图片 -- 图虫网

    字符串(str)编码成字节码(bytes),字节码解码为字符串 获取当前环境编码:sys.stdin.encoding url编码urllib.parse.quote() url解码urllib.pa ...

  9. 【转】Python 代码批量抓取免费高清图片!

    import requests from bs4 import BeautifulSoup import random import time from fake_useragent import U ...

随机推荐

  1. PHP图片处理库Grafika详细教程

    转载自51CTO 开发频道 1.图像基本处理:http://developer.51cto.com/art/201611/520928.htm 2.图像特效处理模块:http://developer. ...

  2. so文件相关

    2018-08-31 今天尝试了一下编译so文件. 最开始是按照这个博主来操作的https://blog.csdn.net/tianshuai4317618/article/details/79073 ...

  3. python正则表达式获取两段标记内的字符串

    比如获取绿色字符串 ModelData.PayTableData =[{"}, {"}, {"}]; ModelData.PayTableData1 =[{"} ...

  4. redis集群中的主从复制架构(3主3从)

    架构图如下 首先开启6个实例,这里为了演示方便,只是在一个linux上开启了6个redis实例 6380 (主)   6480 (从) 6381(主)   6481(从) 6382(主)   6482 ...

  5. Oracal 学习之用户角色创建分配表空间 给角色分配权限

    //创建角色inspur 密码为inspur,默认的表空间为USERS create user inspur identified by inspur default tablespace USERS ...

  6. HBuilder中ios打包

    参考:http://ask.dcloud.net.cn/article/152 在ios端钥匙串双击(教程上是双击)导入证书时候,可能会报错,直接把证书文件拖入到keychain的登录里就解决了. 1 ...

  7. 栈(NOIP2003&水题测试2017082501)

    题目链接:栈 这题不难. 我们看一下,其实可以发现是卡特兰数. 不知道卡特兰数?没事,给你简单讲一下. 卡特兰数的递推式f(n)=f(0)*f(n-1)+f(1)*f(n-2)+-+f(n-2)*f( ...

  8. PL/SQL Developer 导出csv文件,用excel打开中文显示乱码

      用PL/SQL Developer的导出csv功能把sql语句的查询结果导出到一个csv文件.这个sql查询的结果里面有中文,最后用execel打开的时候发现中文全部是乱码. 方法 1 导出csv ...

  9. java保存繁体字到数据库时就报错Incorrect string value: '\xF0\xA6\x8D\x8B\xE5\xA4...' for column 'name' at row 1

    问题分析 普通的字符串或者表情都是占位3个字节,所以utf8足够用了,但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,为了应对无线互联网的机遇和挑战.避免 emoji 表情符号带来的问题 ...

  10. 2018.12.31 NOIP训练 偶数个5(简单数论)

    传送门 对于出题人zxyoizxyoizxyoi先%\%%为敬题目需要龟速乘差评. 题意简述:5e55e55e5组数据,给出n,请你求出所有n位数中有偶数个5的有多少,n≤1e18n\le1e18n≤ ...