使用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算法学习之基数排序实例
Dec 18 Python
python使用Flask框架获取用户IP地址的方法
Mar 21 Python
Python测试人员需要掌握的知识
Feb 08 Python
python实现音乐下载器
Apr 15 Python
基于PyQt4和PySide实现输入对话框效果
Feb 27 Python
python实现简单加密解密机制
Mar 19 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
Nov 11 Python
python文字转语音的实例代码分析
Nov 12 Python
Python变量作用域LEGB用法解析
Feb 04 Python
django admin 添加自定义链接方式
Mar 11 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
Jun 22 Python
PyQt5结合QtDesigner实现文本框读写操作
Jun 11 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
php设计模式 Template (模板模式)
2011/06/26 PHP
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
CI框架入门之MVC简单示例
2016/11/21 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
Gird事件机制初级读本
2007/03/10 Javascript
Domino中运用jQuery读取视图内容的方法
2009/10/21 Javascript
kmock javascript 单元测试代码
2011/02/06 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
javascript函数的四种调用模式
2017/01/08 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
Express系列之multer上传的使用
2017/10/27 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
Python实现多并发访问网站功能示例
2017/06/19 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
python采集微信公众号文章
2018/12/20 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
Python warning警告出现的原因及忽略方法
2020/01/31 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
Python实现Excel自动分组合并单元格
2021/02/22 Python
使用phonegap进行本地存储的实现方法
2017/03/31 HTML / CSS
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
阿迪达斯希腊官方网上商店:adidas希腊
2019/04/06 全球购物
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
天气温馨提示语
2015/07/14 职场文书
django项目、vue项目部署云服务器的详细过程
2022/07/23 Servers