python-爬虫(1)
来源:互联网 发布:ubuntu无法登录界面 编辑:程序博客网 时间:2024/06/05 10:21
python爬虫主要分为三个部分:抓取、分析以及存储。
1、抓取:如何抓取网页内容呢?使用urllib2或者request抓取网页内容。
打开百度-图片,我们看到的是一张张精美的图片,这个过程其实是用户输入网址之后,经过DNS服务器解析,找到服务器主机,向主机申请访问,主机经过解析之后发送回浏览器HTML+JS+CSS等代码,浏览器对这些代码进行解析便可以看到我们申请访问的内容。
下面我们抓取百度首页的源码为例:
1、使用urllib2库
import urllib2url= "http://www.baidu.com"response = urllib2.urlopen(url)print response.read()
将代码写入一个文件并保存,在相应的目录执行命令查看结果。
python e.py
传入url,这个是百度网页的首页,协议是HTTP协议,当然你也可以把HTTP换做FTP,FILE,HTTPS 等等,这只是代表了一种访问控制协议,urlopen可以接受三个参数:
urlopen(url, data, timeout)
参数1:url就是我们将要访问的网址。
参数2:data是我们要上传到服务器的地址。
参数3:tiemout是超时时间。
当然第2、3个参数是可以不传送的,data默认为空None,timeout默认为socket._GLOBAL_DEFAULT_TIMEOUT。
方法返回一个response对象,返回的所有信息都保存在这个对象中。
使用该对象的read()方法,读取对象中的内容。
2、使用request
我们也可以使用request请求,Request类的实例,构造时传入url,data等内容。比如上面的两行代码,我们可以这么改写:
import urllib2url = "http://www.baidu.com"request = urllib2.Request(url)response = urllib2.urlopen(request)print response.read()
这种写法中间多一个request对象,建议大家如是写,因为有些时候我们爬取网页的时候,还要上传一些其他的信息,这时候使用request就会好很多,通过构建一个request(请求),服务器响应请求,这样更容易看明白。
上面的程序向大家展示了如何抓取静态网页的内容,不过大多数时候都是动态的,既需要你传递参数给它,比如登陆账号和密码。怎么办呢?这时候就用到了我们前面说的data参数了。
我们将需要上传的账号密码等信息,传送到url中,得到服务器的响应。
我们定义一个字典,名字为values,设置username和password,下面利用urllib的urlencode方法将字典编码,命名为data,构建request时传入两个参数,url和data,运行程序,返回的便是页面内容。
import urllib2import urlliburl = "http://passport.xxxx.net/account/login"values = {"account":"wdf880817@sina.com", "password":"xxxxxxx"}data = urllib.urlencode(values) geturl = url + '?' + datarequest = urllib2.Request(geturl)response = urllib2.urlopen(request)print response.read()
字典的定义方式还有一种:
import urllib2import urlliburl = "http://passport.xxxx.net/account/login"values = {}values["account"] = "wdf880817@sina.com"values["password"] = "xxxxxxxxxx"data = urllib.urlencode(values) geturl = url + "?" + datarequest = urllib2.Request(geturl)response = urllib2.urlopen(request)print response.read()
将geturl打印出来,我们得到
http://xxxxxx.csdn.net/account/login?account=wdf880817@sina.com&password=xxxxxxxx
这样我们就得到了http://xxxxxx.csdn.net网页中,账号密码分别为wdf880817@sina.com和xxxxxxxx的用户的相关数据。
- python 爬虫(1)
- python 爬虫(1)
- python-爬虫(1)
- 【python爬虫】python爬虫入门攻略(1)
- Python爬虫初学(1)
- 小小Python爬虫(1)
- Python网络爬虫(1)
- Python爬虫(bs4)-1
- python 爬虫 教程(1)
- Python爬虫开发(1)
- Python爬虫入门(1)
- Python爬虫笔记----爬虫技术入门(1)
- 【网络爬虫】【python】网络爬虫(一):python爬虫概述
- Python爬虫入门(1):综述
- Python爬虫入门(1):综述
- python写一个爬虫(1)
- python爬虫(1):爬取糗百内容
- Python网络爬虫(1)获取网页
- 使用Tooltips库在页面进行hint提示
- 执行SQL语句的增删改查
- ERROR 1118 : Row size too large. The maximum row size for the used table type
- TypeError: __init__() takes at least 4 arguments (4 given)
- 润乾报表中参数表单关联过滤异步加载用法
- python-爬虫(1)
- python爬虫:BeautifulSoup 使用select方法的使用
- 搜索引擎关键字智能提示的一种实现
- 二进制中1的个数
- 城市智商的提出,基于互联网云脑的智慧城市发展水平评测研究
- JVM7、8详解及优化
- 数据结构-排序算法1
- Linux系统逻辑卷管理
- 虚拟机中linux(Centos7)的安装及设置