上一篇说到用BeautifulSoup解析源代码,下面我们就来实战一下:

 from bs4 import BeautifulSoup
html = urllib.request.urlopen('http://www.massey.ac.nz/massey/learning/programme-course/programme.cfm?prog_id=93536')
html = html.read().decode('utf-8')
soup = BeautifulSoup(html)
"""
or you can do:
soup = BeautifulSoup(open('F:\\forpython\\Master of Counselling Studies (MCounsStuds) - 2017 - Massey University.html',encoding = 'utf-8'))
"""
soup.find_all('h1')
soup.h1.get_text()

其实用open的方式可以避免decode报错,可以的话还是用open比较好。运行结果:

 soup.find_all('h1')
Out[76]: [<h1>Master of Advanced Leadership Practice (<span>MALP</span>)</h1>]

噌~是不是快了许多,还有更快的:

 soup.h1.get_text()
Out[75]: 'Master of Advanced Leadership Practice (MALP)'

h1其实是一个标签,用BeautifulSoup解析过后可以直接引用,下面我们直接引用title标签(学过html的同学会知道title标签)

 soup.title
Out[79]: <title>Master of Advanced Leadership Practice (MALP) - 2017 - Massey University</title>

接下来我们用BeautifulSoup帮助我们爬一张图片:

右键单击,选择‘检查’(我用的Google浏览器)

通过右边的elements一步一步的查找图片所在的源代码(你把鼠标放在源代码上会显现相应的位置)

看到了吧,在<div,class="block block-feature-image">下,我们使用BeautifulSoup开始撸:

 a = soup.find('div',{'class':"block block-feature-image"}).figure.img.attrs['src']
# soup.figure.img.attrs['src'] 这样也可以
a
Out[129]: '/massey/fms/Study/StudyAtMassey/Images/prog_images/93059.jpg'

attrs是属性的意思,img.attrs['src']就是调出img对象src的属性值(这个语法我也不是很懂,好像是xpath的语法)。再把网址的头添加上去,写入本地文件:

 a1 = 'http://www.massey.ac.nz'+a
pic = urllib.request.urlopen(a1).read()
pic_data=open('F:/1.jpg','wb')
pic_data.write(pic)
pic_data.close()

搞定

python:BeautifulSoup学习的更多相关文章

  1. Python爬虫学习:三、爬虫的基本操作流程

    本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:三.爬虫的基本操作与流程 一般我们使用Python爬虫都是希望实现一套完整的功能,如下: 1.爬虫目标数据.信息: 2.将 ...

  2. python爬虫学习笔记(一)——环境配置(windows系统)

    在进行python爬虫学习前,需要进行如下准备工作: python3+pip官方配置 1.Anaconda(推荐,包括python和相关库)   [推荐地址:清华镜像] https://mirrors ...

  3. python beautifulsoup爬虫

    爬虫这个听起来很 hack 的名字,是我学习 python 的诱因.当 python 基础学习到一定程度(基本语法,数据类型掌握) 就可以开启自己的小爬虫了.毕竟实践才是提高的最快途径.废话说完了,下 ...

  4. python爬虫学习01--电子书爬取

    python爬虫学习01--电子书爬取 1.获取网页信息 import requests #导入requests库 ''' 获取网页信息 ''' if __name__ == '__main__': ...

  5. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  6. 60分钟Python快速学习(给发哥一个交代)

    60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空 ...

  7. python爬虫学习(1) —— 从urllib说起

    0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...

  8. python爬虫学习 —— 总目录

    开篇 作为一个C党,接触python之后学习了爬虫. 和AC算法题的快感类似,从网络上爬取各种数据也很有意思. 准备写一系列文章,整理一下学习历程,也给后来者提供一点便利. 我是目录 听说你叫爬虫 - ...

  9. Python正则表达式学习摘要及资料

    摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m 到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会匹配 4 个 a,但 a{2 ...

  10. python 线程学习

    彩照 一.学习[1] # -*- coding: utf-8 -*- import time import thread def timer(no, interval): cnt = 0 while ...

随机推荐

  1. 【Swift后台】环境安装

    macOS 在macOS上使用Vapor,需要Xcode 9.3或更高版本.Swift 4.1或更高版本.安装还需要Homebrew命令. 检查Swift版本: swift --version Vap ...

  2. Windows去除开始菜单图标背景

    1.开始菜单图标右键找到目标程序的存储目录. 2.删除目录下的目标程序名+.VisualElementsManifest.xml的文件. 3.开始菜单图标右键找到图标的存储目录,取消开始屏幕固定并删除 ...

  3. 在线程中使用ClientQuery注意的问题

    今天遇到奇怪的问题,在线程中建立一个TkbmMWClientQuery的临时对象q,及一个TkbmMWBinaryStreamFormat的临时对象bsf,第一次执行正常,再次执行时一直等待,也不产生 ...

  4. Linux ping route nslookup ifconfig arp traceroute

    route -n  查看默认网关 ping  -c 包个数 ping -s 包大小 host  目标主机 主机解析 nslookup  目标主机 arp -an 查看arp arp -s IP地 MA ...

  5. vue+django前后端项目部署

    一.python3的安装 1.安装python前的库环境: yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel ...

  6. 【踩坑记录】 使用form标签的 reset() 方法报错原因及处理方法

    如果form标签内包含了 id 为 reset 的元素,在调用form的 reset() 方法时,会报xxx.reset is not a function,原因是在调用form的 reset() 方 ...

  7. java 如何实现文件变动的监听

    获取修改时间 long lastTime = file.lastModified(); 原文链接:https://blog.csdn.net/liuyueyi25/article/details/79 ...

  8. 【转】用win7(64位)远程桌面连接linux(Ubuntu14.04)详细教程

    转自:http://blog.csdn.net/qq754438390/article/details/50042511 亲测,确实是可以.非常感谢原博. 用win7(64位)远程桌面连接linux( ...

  9. Java-ConfigHelper工具类

    /** * 读取配置文件 */ import java.io.File; import java.net.URL; import org.apache.commons.configuration.Co ...

  10. 4、路由事件 RoutedEvent

    路由事件的类型:具体参考https://www.cnblogs.com/jellochen/p/3475754.html Tunnel隧道方式:路由事件使用隧道策略,以便事件实例通过树向下路由(从根到 ...