python 爬虫(二)
python 爬虫 Advanced HTML Parsing
1. 通过属性查找标签:基本上在每一个网站上都有stylesheets,针对于不同的标签会有不同的css类于之向对应在我们看到的标签可能是像下面这样的
<span class="green" ></span> <span class="red"></span>
通过标签的class我们的程序能够简单的将他们分辨开来。
from urllib.request import urlopen
from bs4 import BeautifulSoup html = urlopen("http://www.pythonscraping.com/pages/warandpeace.html")
bsObj = BeautifulSoup(html,"html.parser") nameList = bsObj.find_all("span",{"class":"green"})
for name in nameList:
print(name.get_text())
运行上面的脚本会将所有class为green的标签找出来,并且打印出来他们的context
I find_all方法:
find_all(name,attrs,recursive,text,**kwargs)
name参数:用来查找名字为name的标签,字符串对象会被忽略掉。这个name参数的值可以使用任意一种过滤器:
1. 字符串,在查找方法中BeautifulSoup会查找与字符串完全匹配的内容
soup.find_all('span')
2. 正则表达式,BeautifulSoup会通过正则表达式的match来匹配内容
soup.find_all(re.compile("b")) # body b
3 列表:如果传入的是列表,beautifulSoup会将列表中所有元素匹配返回
soup.find_all(['a','b'])
4 True,返回所有标签
5 方法,如果没有合适的过滤器还可以定义一个方法,这个方法只能接受一个参数,如果方法返回为True表示当前元素匹配并且被找到,如果不是返回false
def has_class_but_no_id(tag):
return tag.has_attr('class') and not tag.has_attr('id')
bsObj.find(has_class_but_no_id)
keyword参数:
如果一个指定名字的参数不是搜索内置的参数名,搜索时会把该参数当做指定名字的标签的属性来搜索
其实这章主要是对BeautifulSoup的介绍:详细信息可见
soup.find_all(id='link2')
soup.find_all(href=re.compile("slsie"))
soup.find_all(id = True)所有有id的标签
搜索指定名字的属性可以是 字符串 正则表达式 列表 True
使用多个指定名称参数同时过滤
soup.find_all(href=re.compile("elsie"),id="link")
有些tag的属性不能够在搜索中使用 比如data-*
data_soup = BeautifulSoup('<div data-foo="value">foo!</div>')
data_soup.find_all(data-foo="value")
# SyntaxError: keyword can't be an expression
text参数:
通过text参数可以搜搜文档中字符串的内容,和name的使用方式基本一样
limit参数:
find_all返回全部的搜索结果,如果文档树很大,那么搜索的结果会比较慢可以使用limit控制返回的数量
revursive参数
调用find_all的时候会搜索当前所有的子孙节点,如果只想搜索直接子节点使用recursive=False
II find方法
find方法和find_all方法在使用上基本相同,find返回一个标签find_all返回一个标签列表
在找的值为空的情况下find_all返回一个空列表find返回None
python 爬虫(二)的更多相关文章
- Python爬虫二
常见的反爬手段和解决思路 1)明确反反爬的主要思路 反反爬的主要思路就是尽可能的去模拟浏览器,浏览器在如何操作,代码中就如何去实现;浏览器先请求了地址url1,保留了cookie在本地,之后请求地址u ...
- Python 爬虫二 requests模块
requests模块 Requests模块 get方法请求 整体演示一下: import requests response = requests.get("https://www.baid ...
- Python爬虫(二十一)_Selenium与PhantomJS
本章将介绍使用Selenium和PhantomJS两种工具用来加载动态数据,更多内容请参考:Python学习指南 Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试 ...
- python爬虫(二)--了解deque
队列-deque 有了上面一节的基础.当然你须要全然掌握上一节的全部方法,由于上一节的方法.在以下的教程中 会重复的用到. 假设你没有记住,请你返回上一节. http://blog.csdn.net/ ...
- python爬虫(二)_HTTP的请求和响应
HTTP和HTTPS HTTP(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收HTML页面的方法 HTTPS(HyperText Transfer Prot ...
- Python爬虫(二十四)_selenium案例:执行javascript脚本
本章叫介绍如何使用selenium在浏览器中使用js脚本,更多内容请参考:Python学习指南 隐藏百度图片 #-*- coding:utf-8 -*- #本篇将模拟执行javascript语句 fr ...
- Python爬虫(二十三)_selenium案例:动态模拟页面点击
本篇主要介绍使用selenium模拟点击下一页,更多内容请参考:Python学习指南 #-*- coding:utf-8 -*- import unittest from selenium impor ...
- Python爬虫(二十二)_selenium案例:模拟登陆豆瓣
本篇博客主要用于介绍如何使用selenium+phantomJS模拟登陆豆瓣,没有考虑验证码的问题,更多内容,请参考:Python学习指南 #-*- coding:utf-8 -*- from sel ...
- Python爬虫(二十)_动态爬取影评信息
本案例介绍从JavaScript中采集加载的数据.更多内容请参考:Python学习指南 #-*- coding:utf-8 -*- import requests import re import t ...
- Python 爬虫(二十五) Cookie的处理--cookielib库的使用
Python中cookielib库(python3中为http.cookiejar)为存储和管理cookie提供客户端支持. 该模块主要功能是提供可存储cookie的对象.使用此模块捕获cookie并 ...
随机推荐
- Eclipse MySQL Hibernate 中文乱码问题
如果是Eclipse的问题,那就对以下各项进行设置,即可排除问题. 设置eclipse相关编码为UTF-8: 修改工作区默认编码,位置:windows--perferences--general--w ...
- 前端构建工具之gulp_常用插件
gulp常用插件的使用 今天来看看一下gulp的常用插件的使用 就像gruntjs需要一个Gruntfile.js文件一样,gulp也需要一个文件作为它的主文件,在gulp中这个文件叫做gulpfil ...
- ubuntu 12.04 LTS 64位兼容运行32位程序
安装完Goagent,运行的时候出现了问题,在网络上翻看一些关于ubuntu的文档时,突然记起自己安装的是64位版,而goagent应该是32位的,于是通过sudo apt-get install i ...
- Android ActionBar 初探
1.指南,例子,个人感觉 首先上官网指南链接http://developer.android.com/guide/topics/ui/actionbar.html 参考了官网上的例子http://de ...
- elastic search使用总结
1. elasticsearch安装 官方下载地址:https://www.elastic.co/downloads/elasticsearch 解压文件 elasticsearch-2.4.0.zi ...
- 使用Open xml 操作Excel系列之二--从data table导出数据到Excel
由于Excel中提供了透视表PivotTable,许多项目都使用它来作为数据分析报表. 在有些情况下,我们需要在Excel中设计好模板,包括数据源表,透视表等, 当数据导入到数据源表时,自动更新透视表 ...
- HDU4738 tarjan割边|割边、割点模板
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4738 坑点: 处理重边 图可能不连通,要输出0 若求出的结果是0,则要输出1,因为最少要派一个人 #inc ...
- Unity3D访问Android系统目录
file:///sdcard/Movies/3D/互动.mp4file:///storage/emulated/0/Movies/3D/互动.mp4/storage/emulated/0/Movies ...
- 设计模式--适配器模式Adapter(结构型)
一.适配器模式 适配器模式的主要作用是在新接口和老接口之间进行适配.将一个类的接口转换成客户端期望的另外一个接口.其实适配器模式有点无赖之举,在前期设计的时候,我们就不应该考虑适配器模式,而应该通过重 ...
- selenium测试框架篇,页面对象和元素对象的管理
前期已经做好使用Jenkins做buildhttp://www.cnblogs.com/tobecrazy/p/4529399.html 做自动化框架,不可避免的就是对象库. 有一个好的对象库,可以让 ...