这里的爬虫知识学习十分基础,都是参考http://cuiqingcai.com/942.html学习的。不过原网页是Python2.7的代码,这里改成了Python3.5版本。
URL,即统一资源定位符,也就是网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
URL的格式由三部分组成:① 第一部分是协议(或称为服务方式)。
② 第二部分是存有该资源的主机IP地址(有时也包括端口号)。
③ 第三部分是主机资源的具体地址,如目录和文件名等。
爬虫爬取数据时必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据。
怎样扒网页呢?
其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS、CSS,如果把网页比作一个人,那么HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服。所以最重要的部分是存在于HTML中的,下面就写个例子来扒一个网页下来。
import urllib.request
import urllib.parse
request = urllib.request.Request("http://www.baidu.com")
response = urllib.request.urlopen(request)
print(response.read())
怎样传送数据呢?
上面的程序演示了最基本的网页抓取,不过,现在大多数网站都是动态网页,需要你动态地传递参数给它,它做出对应的响应。所以,在访问时,我们需要传递数据给它。
数据传送分为POST和GET两种方式,GET方式是直接以链接形式访问,链接中包含了所有的参数,如果包含了密码的话是一种不安全的选择,不过可以直观地看到自己提交了什么内容。POST则不会在网址上显示所有的参数,不过如果想直接查看提交了什么就不太方便了。
POST方式:
values = {}
values['username'] = "xxxxxxxx"
values['password'] = "xxxxxxxx"
# post #
data = urllib.parse.urlencode(values).encode(encoding='UTF8')
url = "http://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn"
header = {"User-Agent":user_agent}
request = urllib.request.Request(url,data,header)
response = urllib.request.urlopen(request)
print(response.read())
GET方式:
values = {}
values['username'] = "xxxxxxxx"
values['password'] = "xxxxxxxx"
# get #
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())