用python怎样爬网页呢?其实就是根据URL来获取它的网页信息!
2017-08-18 10:18
330 查看
我们在浏览器中看到的画面优美的界面,其实是由浏览器,对网页内容做了解释后,才呈现出来的类似word的WYSIWYG
实质它是一段HTML代码,加JS、CSS等。如果把网页比作一个人,那么HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服。最重要的部分是存在于HTML中的。
用一个例子来爬网页
import urllib2
response = urllib2.urlopen("http://www.baidu.com")
print response.read()
这个例子中,真正的程序就两行,把它保存成demo.py,进入该文件的目录,执行如下命令查看运行结果。
python demo.py
可以看到这个网页的源码已经被爬下来了。
网页爬取方法
那么我们来分析这几行Python代码:
import urllib2
response = urllib2.urlopen("http://www.baidu.com")
print response.read()
第2行
response = urllib2.urlopen("http://www.baidu.com")
首先我们调用的是urllib2库里面的urlopen方法,传入一个URL
这个网址是百度首页,协议是HTTP协议
当然你也可以把HTTP换做FTP,FILE,HTTPS 等等,只是代表了一种访问控制协议
三个参数
urlopen一般接受三个参数,它的参数如下:
urlopen(url, data, timeout)
第一个参数url即为URL,第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间。
第一个参数URL是必须要传送的,本例里传送了百度的URL
第二三个参数可以不传,
data默认为空None
timeout默认为socket._GLOBAL_DEFAULT_TIMEOUT
执行urlopen方法之后,返回一个response对象,返回信息便保存在这里面。
print response.read()
response对象有一个read方法,可以返回获取到的网页内容。
第3行
print response.read()
如果不加read直接打印会是什么?
直接打印出了该对象的描述
<addinfourlat 139728495260376 whose fp= <socket._fileobjectobject at 0x7f1513fb3ad0>>
所以一定要加read方法
构造Requset
其实上面的urlopen参数,可以传入一个request请求
它其实就是一个Request类的实例,构造时需要传入Url,Data等等的内容。
比如上面的三行代码,我们可以这么改写
import urllib2
request = urllib2.Request("http://www.baidu.com")
response = urllib2.urlopen(request)
print response.read()
运行结果是完全一样的,只不过中间多了一个request对象
推荐大家这么写,因为在构建请求时还需要加入好多内容
通过构建一个request,服务器响应请求得到应答,这样显得逻辑上清晰明确。
实质它是一段HTML代码,加JS、CSS等。如果把网页比作一个人,那么HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服。最重要的部分是存在于HTML中的。
用一个例子来爬网页
import urllib2
response = urllib2.urlopen("http://www.baidu.com")
print response.read()
这个例子中,真正的程序就两行,把它保存成demo.py,进入该文件的目录,执行如下命令查看运行结果。
python demo.py
可以看到这个网页的源码已经被爬下来了。
网页爬取方法
那么我们来分析这几行Python代码:
import urllib2
response = urllib2.urlopen("http://www.baidu.com")
print response.read()
第2行
response = urllib2.urlopen("http://www.baidu.com")
首先我们调用的是urllib2库里面的urlopen方法,传入一个URL
这个网址是百度首页,协议是HTTP协议
当然你也可以把HTTP换做FTP,FILE,HTTPS 等等,只是代表了一种访问控制协议
三个参数
urlopen一般接受三个参数,它的参数如下:
urlopen(url, data, timeout)
第一个参数url即为URL,第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间。
第一个参数URL是必须要传送的,本例里传送了百度的URL
第二三个参数可以不传,
data默认为空None
timeout默认为socket._GLOBAL_DEFAULT_TIMEOUT
执行urlopen方法之后,返回一个response对象,返回信息便保存在这里面。
print response.read()
response对象有一个read方法,可以返回获取到的网页内容。
第3行
print response.read()
如果不加read直接打印会是什么?
直接打印出了该对象的描述
<addinfourlat 139728495260376 whose fp= <socket._fileobjectobject at 0x7f1513fb3ad0>>
所以一定要加read方法
构造Requset
其实上面的urlopen参数,可以传入一个request请求
它其实就是一个Request类的实例,构造时需要传入Url,Data等等的内容。
比如上面的三行代码,我们可以这么改写
import urllib2
request = urllib2.Request("http://www.baidu.com")
response = urllib2.urlopen(request)
print response.read()
运行结果是完全一样的,只不过中间多了一个request对象
推荐大家这么写,因为在构建请求时还需要加入好多内容
通过构建一个request,服务器响应请求得到应答,这样显得逻辑上清晰明确。
相关文章推荐
- 用python怎样爬网页呢?其实就是根据URL来获取它的网页信息!
- 根据URL地址获取网页信息(GET/POST)
- java根据网页URL获取正文信息,并调整正文格式为段落显示---(两种方式)
- 根据网页的URL获取网页信息
- python根据url获取网页内容
- C# HttpWebRequest 绝技 根据URL地址获取网页信息
- C# HttpWebRequest 绝技 根据URL地址获取网页信息
- C# HttpWebRequest 绝技 根据URL地址获取网页信息
- Python 获取根据文件URL 获取文件的基本信息
- 根据url获取网页html比较网站运行是否正常
- python3.3三种简单获取网页信息的方法
- 用python+selenium从百度获取本地明日的天气信息并根据温度情况设置提醒
- 在python获取网页的代码中添加头信息模拟浏览器
- java 根据URL获取网页源码
- [Python] 根据IP获取位置信息
- 利用URL来获取网页上的文本信息
- 根据查询的关键字,实现获取百度指定页数的搜索结果的信息(网页地址,标题,摘要,并有排序的说明)
- 怎样获取网页选择框的所选item的文本信息
- python根据京东商品url获取产品价格
- 根据URL地址获取信息