打开网页总结

爬虫分为几个步骤,首先是获得url,然后下载url里面的源码,然后再去分析该源码里面我们所需要的东西。

首先学习的是urlopen(url,data,timeout),后两者可以不写,来打开数据

import urllib.request

response = urllib.request.urlopen("http://www.baidu.com")

print response.read()
这样子就可以爬取整个网页了。
然而方法还是有很多。。。

3.构造Requset

其实上面的urlopen参数可以传入一个request请求,它其实就是一个Request类的实例,构造时需要传入Url,Data等等的内容。比如上面的两行代码,我们可以这么改写

request = urllib.request.Request("http://www.baidu.com")

response =urllib.request.(request)
print response.read()
一样的效果,只是方式不一样,对于request最多可以传递两个数据,(url,data),data就是比如是用户名和密码,就是打开网页时需要的登陆数据,才可以登陆到相对应的网页。接下来就是讲对应的data数据由来。

4.POST和GET数据传送

让我们来回忆一下get和post方式吧。

最重要的区别是GET方式是直接以链接形式访问,链接中包含了所有的参数,当然如果包含了密码的话是一种不安全的选择,不过你可以直观地看到自己提交了什么内容。POST则不会在网址上显示所有的参数

总的来说,get方式会在网页上显示你的data数据,而post方式则不会。

这是post方式:

import urllib.request
import urllib.parse
values={}
values['username']='02蔡彩虹'
values['password']='XXXX'
url="http://www.baidu.com"
data=urllib.parse.urlencode(values)
request=urllib.request.Request(url,data)
content=urllib.request.urlopen(request).read()
print(data)
因为网页上的名字和密码需要进行编码,对于字典的编码就用
urllib.parse.urlencode(values)
它就会自动的编出符合等式的编码,对于编码,会在编码转换方面讲http://blog.csdn.net/haoni123321/article/details/15814111/,该链接里面有
这是get方式;
values={}
values['username'] = "1016903103@qq.com"
values['password']="XXXX"
data=urllib.parse.urlencode(values)
url = "http://passport.csdn.net/account/login"
geturl = url + "?"+data
request =urllib.request.Request(geturl)
response = urllib.request.urlopen(request)
print response.read()
以上是urllib打开网页的方式
:使用selenium
from selenium import webdriver
browser=webdriver.Chrome()
browser.get('http://www.baidu.com/')
print(browser.page_source)
期间,他需要一个模拟浏览器,相当于打开浏览器的方法
最后一句就可以打开网页的所有链接
它的具体用法在后面会陆续讲到
三:使用requests
url="http://www.baidu.com"
html = requests.get(url)
print(html.text)
这样子即可获取相对应的网页

 


原文地址:https://www.cnblogs.com/caicaihong/p/5687331.html