使用Python3编写抓取网页和只抓网页图片的脚本


Posted in Python onAugust 20, 2015

最基本的抓取网页内容的代码实现:

#!/usr/bin/env python 
 
from urllib import urlretrieve 
 
def firstNonBlank(lines): 
  for eachLine in lines: 
    if not eachLine.strip(): 
      continue 
    else: 
      return eachLine 
 
def firstLast(webpage): 
  f = open(webpage) 
  lines = f.readlines() 
  f.close() 
  print firstNonBlank(lines), 
  lines.reverse() 
  print firstNonBlank(lines), 
 
def download(url='http://www',process=firstLast): 
  try: 
    retval = urlretrieve(url)[0] 
  except IOError: 
    retval = None 
  if retval: 
    process(retval) 
 
if __name__ == '__main__': 
  download()

利用urllib模块,来实现一个网页中针对图片的抓取功能:

import urllib.request 
import socket 
import re 
import sys 
import os 
targetDir = r"C:\Users\elqstux\Desktop\pic" 
def destFile(path): 
  if not os.path.isdir(targetDir): 
    os.mkdir(targetDir) 
  pos = path.rindex('/') 
  t = os.path.join(targetDir, path[pos+1:]) 
  return t 
 
if __name__ == "__main__": 
  hostname = "http://www.douban.com" 
  req = urllib.request.Request(hostname) 
  webpage = urllib.request.urlopen(req) 
  contentBytes = webpage.read() 
  for link, t in set(re.findall(r'(http:[^\s]*?(jpg|png|gif))', str(contentBytes))): 
    print(link) 
    urllib.request.urlretrieve(link, destFile(link))

       

import urllib.request 
import socket 
import re 
import sys 
import os 
targetDir = r"H:\pic" 
def destFile(path): 
  if not os.path.isdir(targetDir): 
    os.mkdir(targetDir) 
  pos = path.rindex('/') 
  t = os.path.join(targetDir, path[pos+1:]) #会以/作为分隔 
  return t 
 
if __name__ == "__main__": 
  hostname = "http://www.douban.com/" 
  req = urllib.request.Request(hostname) 
  webpage = urllib.request.urlopen(req) 
  contentBytes = webpage.read() 
  match = re.findall(r'(http:[^\s]*?(jpg|png|gif))', str(contentBytes) )#r'(http:[^\s]*?(jpg|png|gif))'中包含两层圆括号,故有两个分组, 
                             #上面会返回列表,括号中匹配的内容才会出现在列表中 
  for picname, picType in match: 
    print(picname) 
    print(picType) 
    
 
''''' 
输出: 
http://img3.douban.com/pics/blank.gif 
gif 
http://img3.douban.com/icon/g111328-1.jpg 
jpg 
http://img3.douban.com/pics/blank.gif 
gif 
http://img3.douban.com/icon/g197523-19.jpg 
jpg 
http://img3.douban.com/pics/blank.gif 
gif 
... 
'''
Python 相关文章推荐
详解Python中的文件操作
Aug 28 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
Jan 24 Python
用python写个自动SSH登录远程服务器的小工具(实例)
Jun 17 Python
Python获取当前函数名称方法实例分享
Jan 18 Python
python 显示数组全部元素的方法
Apr 19 Python
使用memory_profiler监测python代码运行时内存消耗方法
Dec 03 Python
基于MATLAB和Python实现MFCC特征参数提取
Aug 13 Python
django创建最简单HTML页面跳转方法
Aug 16 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
Dec 02 Python
python读取raw binary图片并提取统计信息的实例
Jan 09 Python
关于TensorFlow新旧版本函数接口变化详解
Feb 10 Python
Python函数调用追踪实现代码
Nov 27 Python
详解Python3中yield生成器的用法
Aug 20 #Python
Python中集合的内建函数和内建方法学习教程
Aug 19 #Python
深入解析Python中的集合类型操作符
Aug 19 #Python
Python中的集合类型知识讲解
Aug 19 #Python
深入理解Python中字典的键的使用
Aug 19 #Python
详解Python中映射类型的内建函数和工厂函数
Aug 19 #Python
详解Python中映射类型(字典)操作符的概念和使用
Aug 19 #Python
You might like
重置版战役片段
2020/04/09 魔兽争霸
dedecms模版制作使用方法
2007/04/03 PHP
PHP中鲜为人知的10个函数
2014/02/28 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
隐性调用php程序的方法
2015/06/13 PHP
详解PHP中的序列化、反序列化操作
2017/03/21 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
InnerHtml和InnerText的区别分析
2009/03/13 Javascript
用js写了一个类似php的print_r输出换行功能
2013/02/18 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
微信小程序App生命周期详解
2018/01/31 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
Django接受前端数据的几种方法总结
2016/11/04 Python
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
python采集微信公众号文章
2018/12/20 Python
Python获取航线信息并且制作成图的讲解
2019/01/03 Python
python 二维数组90度旋转的方法
2019/01/28 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
详解python datetime模块
2020/08/17 Python
Betsey Johnson官网:妖娆可爱的连衣裙及鞋子、手袋和配件
2016/12/30 全球购物
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
英国户外服装、鞋类和设备的领先零售商:Millets
2020/10/12 全球购物
竞选演讲稿范文大全
2014/05/12 职场文书
幼儿园2014年度工作总结
2014/11/10 职场文书
2014年销售工作总结范文
2014/12/01 职场文书
2016年五一促销广告语
2016/01/28 职场文书