使用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实现定时播放mp3
Mar 29 Python
python制作最美应用的爬虫
Oct 28 Python
python将每个单词按空格分开并保存到文件中
Mar 19 Python
Python实现的读取/更改/写入xml文件操作示例
Aug 30 Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 Python
使用Python处理BAM的方法
Sep 28 Python
python实现键盘控制鼠标移动
Nov 27 Python
python如何获取当前文件夹下所有文件名详解
Jan 25 Python
Python基本类型的连接组合和互相转换方式(13种)
Dec 16 Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
Jul 13 Python
pycharm 实现调试窗口恢复
Feb 05 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
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
使用PHP获取网络文件的实现代码
2010/01/01 PHP
php 获取页面中指定内容的实现类
2014/01/23 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
如何用js控制frame的隐藏或显示的解决办法
2013/03/20 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
js实现文字闪烁特效的方法
2015/12/17 Javascript
jQuery实现返回顶部功能
2016/02/23 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
React Hooks的深入理解与使用
2018/11/12 Javascript
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
vue组件之间数据传递的方法实例分析
2019/02/12 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
vue实现菜单切换功能
2019/05/08 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
JS代码简洁方式之函数方法详解
2020/07/28 Javascript
Python lxml模块安装教程
2015/06/02 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
Under Armour安德玛德国官网:美国高端运动科技品牌
2019/03/09 全球购物
留学推荐信写作指南
2014/01/25 职场文书
心理健康教育制度
2014/01/27 职场文书
小学生常见病防治方案
2014/06/06 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
房地产销售助理岗位职责
2015/04/14 职场文书
演讲开场白台词大全
2015/05/29 职场文书
使用CSS连接数据库的方式
2022/02/28 HTML / CSS