使用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实现通过shelve修改对象实例
Sep 26 Python
Python与Redis的连接教程
Apr 22 Python
Python实现感知器模型、两层神经网络
Dec 19 Python
python实现搜索文本文件内容脚本
Jun 22 Python
Python Web版语音合成实例详解
Jul 16 Python
解决python有时候import不了当前的包问题
Aug 28 Python
PyQt5 控件字体样式等设置的实现
May 13 Python
Python3爬虫带上cookie的实例代码
Jul 28 Python
python利用线程实现多任务
Sep 18 Python
通过实例解析Python文件操作实现步骤
Sep 21 Python
Python list和str互转的实现示例
Nov 16 Python
Pycharm连接远程服务器并远程调试的全过程
Jun 24 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
根德YB400的电路分析
2021/03/02 无线电
PHP的开合式多级菜单程序
2006/10/09 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
jquery 分页控件实现代码
2009/11/30 Javascript
Jquery 常用方法经典总结
2010/01/28 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
Jquery图形报表插件 jqplot简介及参数详解
2012/10/10 Javascript
修复bash漏洞的shell脚本分享
2014/12/31 Javascript
js实现单击图片放大图片的方法
2015/02/17 Javascript
javascript引用类型指针的工作方式
2015/04/13 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
自制微信公众号一键排版工具
2016/09/22 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
vue.js实现含搜索的多种复选框(附源码)
2017/03/23 Javascript
详解基于vue的移动web app页面缓存解决方案
2017/08/03 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
Javascript中parseInt的正确使用方式
2018/10/17 Javascript
@angular前端项目代码优化之构建Api Tree的方法
2018/12/24 Javascript
记录vue项目中遇到的一点小问题
2019/05/14 Javascript
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
python web基础之加载静态文件实例
2018/03/20 Python
对python函数签名的方法详解
2019/01/22 Python
详解python中sort排序使用
2019/03/23 Python
Python常见数据类型转换操作示例
2019/05/08 Python
python使用mitmproxy抓取浏览器请求的方法
2019/07/02 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
前端隐藏出边界内容的实现方法
2016/04/14 HTML / CSS
关于赌博的检讨书
2014/01/08 职场文书
保护环境的建议书
2014/03/12 职场文书
2014年人事科工作总结
2014/11/19 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
2016母亲节感恩话语
2015/12/09 职场文书