python爬虫学习之路正式开始一

1抓取简单网页:

#encoding:UTF-8

import urllib.request

url = "http://www.baidu.com"

data = urllib.request.urlopen(url).read()

data = data.decode('UTF-8')

print(data)


2简单处理

抓取百度上面搜索关键词为Jecvay Notes的网页, 则代码如下

import urllib

import urllib.request

data={}

data['word']='Jecvay Notes'

url_values=urllib.parse.urlencode(data)

url="http://www.baidu.com/s?"

full_url=url+url_values

data=urllib.request.urlopen(full_url).read()

data=data.decode('UTF-8')

print(data)


data是一个字典, 然后通过urllib.parse.urlencode()来将data转换为 ‘word=Jecvay+Notes’的字符串, 最后和url合并为full_url, 其余和上面那个最简单的例子相同. 关于urlencode(), 同样通过官方文档学习一下他是干什么的. 通过查看

urllib.parse.urlencode(query, doseq=False, safe=”, encoding=None, errors=None)

urllib.parse.quote_plus(string, safe=”, encoding=None, errors=None)

大概知道他是把一个通俗的字符串, 转化为url格式的字符串。

这段搜索关键词其实就是拼写一个url字符串,只不过带了筛选了的url而已。

一、urlencode

urllib库里面有个urlencode函数,可以把key-value这样的键值对转换成我们想要的格式,返回的是a=1&b=2这样的字符串,比如:

>>> from urllib import urlencode

>>> data = {

...    'a': 'test',

...    'name': '魔兽'

... }

>>> print urlencode(data)

a=test&name=%C4%A7%CA%DE

如果只想对一个字符串进行urlencode转换,怎么办?urllib提供另外一个函数:quote()

>>> from urllib import quote

>>> quote('魔兽')

'%C4%A7%CA%DE'

二、urldecode

当urlencode之后的字符串传递过来之后,接受完毕就要解码了——urldecode。urllib提供了unquote()这个函数,可没有urldecode()!

>>> from urllib import unquote

>>> unquote('%C4%A7%CA%DE')

'\xc4\xa7\xca\xde'

>>> print unquote('%C4%A7%CA%DE')

魔兽

三、讨论

在做urldecode的时候,看unquote()这个函数的输出,是对应中文在gbk下的编码,在对比一下quote()的结果不难发现,所谓的urlencode就是把字符串转车gbk编码,然后把\x替换成%。如果你的终端是utf8编码的,那么要把结果再转成utf8输出,否则就乱码。

可以根据实际情况,自定义或者重写urlencode()、urldecode()等函数。

你可能感兴趣的:(python爬虫学习之路正式开始一)