python:爬虫
模块:
(1)url管理器:对url进行管理
(2)网页下载器(urllib2):将需要爬取的url指定的网页以字符串的形式下载下来
(3)网页解释器(BeautifulSoup):解析
利用urllib2下载网页的方法:
方法1:
import urllib2,cookielib
url = 'http://www.baidu.com' #定义url res1 = urllib2.urlopen(url) #请求url
print res1.getcode() #获取动态码
print len(res1.read()) #获取内容
方法2:
#伪装成浏览器
import urllib2,cookielib
url = 'http://www.baidu.com' request = urllib2.Request(url)
request.add_header('User-Agent','Mozilla/5.0') #添加http的header,伪装成浏览器
res2 = urllib2.urlopen(request) #发送请求获取结果
print res2.getcode()
print len(res2.read())
方法3:
#添加特殊情景的处理器。例如需要登录cookie、代理proxy、https、网页自动跳转或者互相志向等网页 #处理cookie实例
import urllib2
import cookielib url = 'http://www.baidu.com'
cj = cookielib.CookieJar() #创建cookie容器
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) #创建一个opener
urllib2.install_opener(opener) #给urllib2安装opener
res3 = urllib2.urlopen(url) #发送请求获取结果
print res3.getcode()
print len(res3.read())
print cj
网页解释器种类:
(1)正则表达式
(2)html.parser
(3)BeautifulSoup:第三方包
(4)lxml
BeautifulSoup语法:
(1)创建bs对象
(2)搜索节点find_all,find(搜索第一个节点)
搜索内容包括:节点名字,节点属性,节点内容
例如:<a href='123.html' class='article_link'>hello,python!</a>
节点名字:a
节点属性:href='123.html' 或 class='article_link'
节点内容:hello,python!
(3)访问节点
from bs4 import BeautifulSoup html_doc = '''
<!DOCTYPE html> <html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>页面1</title>
</head> <body>
<a href='http://www.baidu.com'>百度</a>
<a href='http://www.youku.com'>优酷</a>
<a href='http://www.hao123.com'>hao123</a>
</body>
</html>
''' soup = BeautifulSoup(html_doc,'html.parser',from_encoding='utf-8') print '获取所有链接:'
links = soup.find_all('a')
for link in links:
print link.name,link['href'],link.get_text() print '只获取百度的链接:'
link_node = soup.find('a',href='http://www.baidu.com')
print link_node.name,link_node['href'],link_node.get_text()
输出结果:
获取所有链接:
a http://www.baidu.com 百度
a http://www.youku.com 优酷
a http://www.hao123.com hao123
获取百度的链接:
a http://www.baidu.com 百度
正则表达式匹配
a http://www.baidu.com 百度
python:爬虫的更多相关文章
- Python 爬虫模拟登陆知乎
在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...
- python爬虫成长之路(一):抓取证券之星的股票数据
获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为python3.5,意在抓取证券之星上当天所 ...
- python爬虫学习(7) —— 爬取你的AC代码
上一篇文章中,我们介绍了python爬虫利器--requests,并且拿HDU做了小测试. 这篇文章,我们来爬取一下自己AC的代码. 1 确定ac代码对应的页面 如下图所示,我们一般情况可以通过该顺序 ...
- python爬虫学习(6) —— 神器 Requests
Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urllib2 模块提供了你所需要的大多数 H ...
- 批量下载小说网站上的小说(python爬虫)
随便说点什么 因为在学python,所有自然而然的就掉进了爬虫这个坑里,好吧,主要是因为我觉得爬虫比较酷,才入坑的. 想想看,你可以批量自动的采集互联网上海量的资料数据,是多么令人激动啊! 所以我就被 ...
- python 爬虫(二)
python 爬虫 Advanced HTML Parsing 1. 通过属性查找标签:基本上在每一个网站上都有stylesheets,针对于不同的标签会有不同的css类于之向对应在我们看到的标签可能 ...
- Python 爬虫1——爬虫简述
Python除了可以用来开发Python Web之后,其实还可以用来编写一些爬虫小工具,可能还有人不知道什么是爬虫的. 一.爬虫的定义: 爬虫——网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区 ...
- Python爬虫入门一之综述
大家好哈,最近博主在学习Python,学习期间也遇到一些问题,获得了一些经验,在此将自己的学习系统地整理下来,如果大家有兴趣学习爬虫的话,可以将这些文章作为参考,也欢迎大家一共分享学习经验. Pyth ...
- [python]爬虫学习(一)
要学习Python爬虫,我们要学习的共有以下几点(python2): Python基础知识 Python中urllib和urllib2库的用法 Python正则表达式 Python爬虫框架Scrapy ...
- python爬虫学习(1) —— 从urllib说起
0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...
随机推荐
- ffmpeg relocation error
在向imx6移植ffmpeg后,一般的编解码操作没有问题,但是当从摄像头录视频时, ffmpeg -f video4linux2 -s 640*480 -r 10 -i /dev/video0 tes ...
- listview 的适配器 getview 随着软件健盘显示和隐藏,出现多个空的position问题
AndroidManifest 里配置 android:windowSoftInputMode="stateHidden|adjustPan" listview的宽高设置成fill ...
- Cucumber语法及测试用例<一>
工作原因,最近一直在研究cucumber的 语法以及它和java之间的关系.鉴于是初学者且代码基础薄弱,我开始摸索前行,感谢分享博客且也在一路前行的人儿们. 1.基本语法为:此处举例两种区别一看即知- ...
- AngularJS-chapter2-7-前端路由
Form表单提交会导致页面之间的切换,没法实现单页应用 Ajax请求不会留下History记录(在后台管理系统,没有后台历史记录还可以) ,但在网络型应用或门户型应用(用户没有办法给改页面加标签或分享 ...
- 1117 冲刺一(Day 1)
冲刺一(第一天) 项目需求确定 现阶段我们进行的项目是到店点餐系统.主要是开发手机端app为用户提供方便快捷的点餐服务.免去顾客到店后遇到因吃饭的人太多而找不到服务人员点餐的窘境.减少了服务人员因为忙 ...
- 关于数组Arry的一些基本认识
认识数组主要从以下几个方面去认识,一:数组具备什么样的特性,二:它能做什么,三:它具备哪些常用的api方法 //数组的原始表示方式 /* 数组的特性:1有长度,2以0开头 */ var arr1 = ...
- Foundation框架—字符串(NSString)
一 NSString不可变字符串 1.字符串的创建 //创建字符串常量 NSString *string1 = @"hello"; string1 = @"hello w ...
- Python-类变量,成员变量,静态变量,类方法,静态方法,实例方法,普通函数
#coding:utf-8class class_name(object): class_var = 'I am a class variable' #类变量 def __init__(self): ...
- dev_set_draw的fill和margin模式
注意:分别观察两张填充模式,一种是内部填充,一种是边缘填充.还有一种缺省的填充. Name dev_set_draw — Define the region fill mode. Signature ...
- Git 操作本地分支与远程分支
1 查看本地分支 git branch 2 查看远程分支 git branch -a 3 新建远程分支 git checkout -b developr git push origin develop ...