python:BeautifulSoup学习
上一篇说到用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学习的更多相关文章
- Python爬虫学习:三、爬虫的基本操作流程
本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:三.爬虫的基本操作与流程 一般我们使用Python爬虫都是希望实现一套完整的功能,如下: 1.爬虫目标数据.信息: 2.将 ...
- python爬虫学习笔记(一)——环境配置(windows系统)
在进行python爬虫学习前,需要进行如下准备工作: python3+pip官方配置 1.Anaconda(推荐,包括python和相关库) [推荐地址:清华镜像] https://mirrors ...
- python beautifulsoup爬虫
爬虫这个听起来很 hack 的名字,是我学习 python 的诱因.当 python 基础学习到一定程度(基本语法,数据类型掌握) 就可以开启自己的小爬虫了.毕竟实践才是提高的最快途径.废话说完了,下 ...
- python爬虫学习01--电子书爬取
python爬虫学习01--电子书爬取 1.获取网页信息 import requests #导入requests库 ''' 获取网页信息 ''' if __name__ == '__main__': ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- 60分钟Python快速学习(给发哥一个交代)
60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空 ...
- python爬虫学习(1) —— 从urllib说起
0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...
- python爬虫学习 —— 总目录
开篇 作为一个C党,接触python之后学习了爬虫. 和AC算法题的快感类似,从网络上爬取各种数据也很有意思. 准备写一系列文章,整理一下学习历程,也给后来者提供一点便利. 我是目录 听说你叫爬虫 - ...
- Python正则表达式学习摘要及资料
摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m 到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会匹配 4 个 a,但 a{2 ...
- python 线程学习
彩照 一.学习[1] # -*- coding: utf-8 -*- import time import thread def timer(no, interval): cnt = 0 while ...
随机推荐
- java 将一个正整数翻译成人民币大写的读法
程序如下: import java.lang.StringBuffer; /** 给定一个浮点数,将其装换成人民币大写的读法 88.5:捌十捌元零伍角 */ public class Num2Rmb ...
- 一点css 基础
css 行内样式优先度最高 margin 属性 为声明外边距 如图 顺序依次为上右下左
- 【2017-04-10】js来控制导航栏在滚动条拉到一定位置时显示
<html> <head> <title>test</title> </head> <body> <div style=& ...
- EntityFrameworkCore
left join var query = from log in logRepository.Table.Include(a => a.User) join user in logReposi ...
- QTP(10)
一.VBS语言基础 1.运算符和表达式 (1)运算符 (2)表达式 a.数学表达式:由算术运算符连接,计算结果为数字 b.字符串表达式:由字符串连接符连接,计算结果为字符串 c.条件表达式:由关系运算 ...
- 第七章 路由 77 路由-使用children属性实现路由嵌套
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- Mac下 CMD常用命令
1.常用命令 pwd 当前工作目录 cd(不加参数) 进root cd(folder) 进入文件夹 cd .. 上级目录 cd ~ 返回root cd - 返 ...
- linux内核 进程管理
进程和线程 进程不单单包含可执行代码(代码段),好包含打开的文件,挂起的信号,处理器状态,虚拟内存地址等. 线程:从内核的角度来说,它并没有线程这个概念.Linux把所有线程都当做进程来实现.内核并没 ...
- updatedepthtexture 和 screen space shadow 开关
2018.0.3f 里面directional light开了shadow 就会有一张updatedepth 如果距离远 没有阴影就没有shadow pass 但是updatedepth没有关掉 管线 ...
- hivesql-一个表中的数据不在另一个表中
如何最有效的判断 一个表中的数据不在另一个表中 两个方法一个是join 另一个是 exist 方法