网站建设实习周记,优化型网站是模板,浏览器下载安装2022最新版,wordpress邮件那么接下来#xff0c;小伙伴们就一起和我真正迈向我们的爬虫之路吧。 1.分分钟扒一个网页下来 怎样扒网页呢#xff1f;其实就是根据URL来获取它的网页信息#xff0c;虽然我们在浏览器中看到的是一幅幅优美的画面#xff0c;但是其实是由浏览器解释才呈现出来的#xf… 那么接下来小伙伴们就一起和我真正迈向我们的爬虫之路吧。 1.分分钟扒一个网页下来 怎样扒网页呢其实就是根据URL来获取它的网页信息虽然我们在浏览器中看到的是一幅幅优美的画面但是其实是由浏览器解释才呈现出来的实质它是一段HTML代码加 JS、CSS如果把网页比作一个人那么HTML便是他的骨架JS便是他的肌肉CSS便是它的衣服。所以最重要的部分是存在于HTML中的下面我们就写个例子来扒一个网页下来。 1 import urllib2
2
3 responseurllib2.urlopen(http://www.baidu.com)
4 print(response.read()) 2.分析扒网页的方法 那么我们来分析这两行代码第一行 1 response urllib2.urlopen(http://www.baidu.com) 首先我们调用的是urllib2库里面的urlopen方法传入一个URL这个网址是百度首页协议是HTTP协议当然你也可以把HTTP换做FTP,FILE,HTTPS 等等只是代表了一种访问控制协议urlopen一般接受三个参数它的参数如下 1 urlopen(url, data, timeout) 第一个参数url即为URL第二个参数data是访问URL时要传送的数据第三个timeout是设置超时时间。 第二三个参数是可以不传送的data默认为空Nonetimeout默认为 socket._GLOBAL_DEFAULT_TIMEOUT 第一个参数URL是必须要传送的在这个例子里面我们传送了百度的URL执行urlopen方法之后返回一个response对象返回信息便保存在这里面。 1 print response.read() response对象有一个read方法可以返回获取到的网页内容。 如果不加read直接打印会是什么答案如下 1 addinfourl at 139728495260376 whose fp socket._fileobject object at 0x7f1513fb3ad0 直接打印出了该对象的描述所以记得一定要加read方法否则它不出来内容可就不怪我咯 3.构造Requset 其实上面的urlopen参数可以传入一个request请求,它其实就是一个Request类的实例构造时需要传入Url,Data等等的内容。比如上面的两行代码我们可以这么改写 1 import urllib2
2
3 request urllib2.Request(http://www.baidu.com)
4 response urllib2.urlopen(request)
5 print response.read() 运行结果是完全一样的只不过中间多了一个request对象推荐大家这么写因为在构建请求时还需要加入好多内容通过构建一个request服务器响应请求得到应答这样显得逻辑上清晰明确。 4.POST和GET数据传送 上面的程序演示了最基本的网页抓取不过现在大多数网站都是动态网页需要你动态地传递参数给它它做出对应的响应。所以在访问时我们需要传递数据给它。最常见的情况是什么对了就是登录注册的时候呀。 把数据用户名和密码传送到一个URL然后你得到服务器处理之后的响应这个该怎么办下面让我来为小伙伴们揭晓吧 数据传送分为POST和GET两种方式两种方式有什么区别呢 最重要的区别是GET方式是直接以链接形式访问链接中包含了所有的参数当然如果包含了密码的话是一种不安全的选择不过你可以直观地看到自己提交了什么内容。POST则不会在网址上显示所有的参数不过如果你想直接查看提交了什么就不太方便了大家可以酌情选择。 POST方式 上面我们说了data参数是干嘛的对了它就是用在这里的我们传送的数据就是这个参数data下面演示一下POST方式。 1 import urllib
2 import urllib2
3
4 values {username:1016903103qq.com,password:XXXX}
5 data urllib.urlencode(values)
6 url https://passport.csdn.net/account/login?fromhttp://my.csdn.net/my/mycsdn
7 request urllib2.Request(url,data)
8 response urllib2.urlopen(request)
9 print response.read() 我们引入了urllib库现在我们模拟登陆CSDN当然上述代码可能登陆不进去因为CSDN还有个流水号的字段没有设置全比较复杂在这里就不写上去了在此只是说明登录的原理。一般的登录网站一般是这种写法。 我们需要定义一个字典名字为values参数我设置了username和password下面利用urllib的urlencode方法将字典编码命名为data构建request时传入两个参数url和data运行程序返回的便是POST后呈现的页面内容。 注意上面字典的定义方式还有一种下面的写法是等价的 1 import urllib2 import urllib23 4 values {}5 values[username] 1016903103qq.com6 values[password] XXXX7 data urllib.urlencode(values) 8 url http://passport.csdn.net/account/login?fromhttp://my.csdn.net/my/mycsdn9 request urllib2.Request(url,data)
10 response urllib2.urlopen(request)
11 print response.read() 以上方法便实现了POST方式的传送 GET方式 至于GET方式我们可以直接把参数写到网址上面直接构建一个带参数的URL出来即可。 1 import urllib2 import urllib23 4 values{}5 values[username] 1016903103qq.com6 values[password]XXXX7 data urllib.urlencode(values) 8 url http://passport.csdn.net/account/login9 geturl url ?data
10 request urllib2.Request(geturl)
11 response urllib2.urlopen(request)
12 print response.read() 你可以print geturl打印输出一下url发现其实就是原来的url加然后加编码后的参数 1 http://passport.csdn.net/account/login?username1016903103%40qq.compasswordXXXX 和我们平常GET访问方式一模一样这样就实现了数据的GET方式传送。 本节讲解了一些基本使用可以抓取到一些基本的网页信息小伙伴们加油 转载整理自静觅 » Python爬虫入门三之Urllib库的基本使用感谢版主的分享。 转载于:https://www.cnblogs.com/AlwaysWIN/p/6236748.html