使用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中的生成器和yield详细介绍
Jan 09 Python
Python正则表达式匹配HTML页面编码
Apr 08 Python
python用10行代码实现对黄色图片的检测功能
Aug 10 Python
Python3使用requests登录人人影视网站的方法
May 11 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
Dec 14 Python
Python操作配置文件ini的三种方法讲解
Feb 22 Python
python获取引用对象的个数方式
Dec 20 Python
Python 项目转化为so文件实例
Dec 23 Python
python3+opencv生成不规则黑白mask实例
Feb 19 Python
Python ini文件常用操作方法解析
Apr 26 Python
python连接mongodb数据库操作数据示例
Nov 30 Python
python抢购软件/插件/脚本附完整源码
Mar 04 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 Mysql日期和时间函数集合
2007/11/16 PHP
PHP Cookie的使用教程详解
2013/06/03 PHP
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
2013/06/21 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
javascript数组组合成字符串的脚本
2021/01/06 Javascript
jquery tools系列 expose 学习
2009/09/06 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
JS判断元素是否在数组内的实现代码
2016/03/30 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
js实现方块上下左右移动效果
2017/08/17 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
使用vue实现grid-layout功能实例代码
2018/01/05 Javascript
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
python两种遍历字典(dict)的方法比较
2014/05/29 Python
python中私有函数调用方法解密
2016/04/29 Python
Python使用filetype精确判断文件类型
2017/07/02 Python
Python类的继承和多态代码详解
2017/12/27 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
深入理解Django-Signals信号量
2019/02/19 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
用Python实现校园通知更新提醒功能
2019/11/23 Python
Python astype(np.float)函数使用方法解析
2020/06/08 Python
python opencv角点检测连线功能的实现代码
2020/11/24 Python
植物选择:Botanic Choice
2017/02/15 全球购物
数控专业应届生求职信
2013/11/27 职场文书
中英文自我评价语句
2013/12/20 职场文书
《称赞》教学反思
2016/02/17 职场文书
Django如何与Ajax交互
2021/04/29 Python
Python实现双向链表
2022/05/25 Python