当我们想要获取一个网页内容的时候会怎么做呢?传统的做法是复制下来,但这只适合单个网页或是数量极少的需求。为了方便更多诗句的获取,我们可以用python中的知识来解决。小编经过一番对比,觉得Urllib库在获取网页方面非常适用小白们使用。毕竟它满足了抓取内容,而且数量多的条件。接下来就让我们一起学习下吧~
一、扒取一个网页
怎样扒网页呢?其实就是根据 URL 来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段 HTML 代码,加 JS、CSS,如果把网页比作一个人,那么 HTML 便是他的骨架,JS 便是他的肌肉,CSS 便是它的衣服。所以最重要的部分是存在于 HTML 中的,下面我们就写个例子来扒一个网页下来。
import urllib2 response = urllib2.urlopen("http://www.baidu.com") print response.read()
是的你没看错,真正的程序就两行,把它保存成 demo.py,进入该文件的目录,执行如下命令。
python demo.py
二、构造 Request
其实上面的 urlopen 参数可以传入一个 request 请求,它其实就是一个 Request 类的实例,构造时需要传入 Url,Data 等等的内容。比如上面的两行代码,我们可以这么改写
import urllib2 request = urllib2.Request("http://www.baidu.com") response = urllib2.urlopen(request) print response.read()
运行结果是完全一样的,只不过中间多了一个 request 对象,推荐大家这么写,因为在构建请求时还需要加入好多内容,通过构建一个 request,服务器响应请求得到应答,这样显得逻辑上清晰明确。
三、POST 和 GET 数据传送
1. POST 方式:
上面我们说了 data 参数是干嘛的?对了,它就是用在这里的,我们传送的数据就是这个参数 data,下面演示一下 POST 方式。
import urllib import urllib2 values = {"username":"1016903103@qq.com","password":"XXXX"} data = urllib.urlencode(values) url = "https://img.wangzhan5u.com/images/10/urllilogin request = urllib2.Request(url,data) response = urllib2.urlopen(request) print response.read()
我们引入了 urllib 库,现在我们模拟登陆 CSDN,当然上述代码可能登陆不进去,因为 CSDN 还有个流水号的字段,没有设置全,比较复杂在这里就不写上去了,在此只是说明登录的原理。一般的登录网站一般是这种写法。 我们需要定义一个字典,名字为 values,参数我设置了 username 和 password,下面利用 urllib 的 urlencode 方法将字典编码,命名为 data,构建 request 时传入两个参数,url 和 data,运行程序,返回的便是 POST 后呈现的页面内容。 注意上面字典的定义方式还有一种,下面的写法是等价的
import urllib import urllib2 values = {} values['username'] = "1016903103@qq.com" values['password'] = "XXXX" data = urllib.urlencode(values) url = "https://img.wangzhan5u.com/images/10/urllilogin request = urllib2.Request(url,data) response = urllib2.urlopen(request) print response.read()
2. GET 方式:
至于 GET 方式我们可以直接把参数写到网址上面,直接构建一个带参数的 URL 出来即可。
import urllib import urllib2 values={} values['username'] = "1016903103@qq.com" values['password']="XXXX" data = urllib.urlencode(values) url = "http://passport.csdn.net/account/login" geturl = url + "?"+data request = urllib2.Request(geturl) response = urllib2.urlopen(request) print response.read()
你可以 print geturl,打印输出一下 url,发现其实就是原来的 url 加?然后加编码后的参数
https://img.wangzhan5u.com/images/10/urllilogin style="font-size: 14px; font-family: 微软雅黑, "Microsoft YaHei";">以上就是python爬虫Urllib库的详解。有些小伙伴会在数据传送上纠结post好还是get好?小编个人感觉get要轻松容易一下,这里着重推荐使用一下。当然想要进阶python的朋友,可以试着挑战post。更多Python学习推荐:起源地模板网教学中心。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!