python3 爬虫入门之Urlib库的基本使用

版权声明:转载请标明出处 https://blog.csdn.net/easy_purple/article/details/82695574

最近开始学习python爬虫了。。了解了python之后才发现python真的是一个不错的语言!人生苦短,我用python!

进入正题:

因为我用的是python3.7,所以用的Urllib库相对于python2.x有点区别。

扒一个网页下来

import urllib.request

retquest=urllib.request.Request("https://www.baidu.com")
response=urllib.request.urlopen(retquest)
print(response.read())

#打印结果:b'<html>\r\n<head>\r\n\t<script>\r\n\t\tlocation.replace(location.href.replace("https://","http://"));\r\n\t</script>\r\n</head>\r\n<body>\r\n\t<noscript><meta http-equiv="refresh" content="0;url=http://www.baidu.com/"></noscript>\r\n</body>\r\n</html>'

分析代码:

  • request不写,直接在urlopen()里写入url,不过最好写request,因为request里还需要加入好多内容,通过构建request,服务器相应得到应答,而且逻辑清晰明确
  • urlopen(url,data,timeout)里有三个参数,第一个就是url,第二个参数data是访问url时要传送的数据,第三个timeout是设置超时时间,第二三个参数是可以不传的。第一个url是必须要传送的,这个例子里我们传送了百度的url,执行urlopen方法之后,返回一个response对象,返回的信息保存在这里。response有一个read方法,返回信息便保存在这里。

使用urllib,post方式传递登录信息

import urllib.request
import urllib.parse

values = {"username": "root", "password": "root"}
data = urllib.parse.urlencode(values).encode('utf-8')
url = "https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn"
request = urllib.request.Request(url, data)
response = urllib.request.urlopen(request)
print(response.read())

加入.encode('utf-8')是为了将data转码为bytes类型,否则会报错

使用urllib,get方式传递登录信息

import urllib.request
import urllib.parse

values = {"username": "root", "password": "root"}
data = urllib.parse.urlencode(values).encode('utf-8')
url = "https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn"
geturl=url+"?"+data
request = urllib.request.Request(geturl)
response = urllib.request.urlopen(request)
print(response.read())

猜你喜欢

转载自blog.csdn.net/easy_purple/article/details/82695574
今日推荐