爬虫(3) 牛刀小试

Posted on 2016-05-18

下面就要用上一篇的内容的那个来做一个更为细致的实战了。

placekitten给猫奴的福利网站。全是喵星人。

image 当你输入为http://placekitten.com/1000/1000就获得一张1000*1000分辨率大小的喵星人图片了。 image

好的,我们现在就根据這个来小试牛刀。

案例一:

urllib.open()

import urllib.request
response =urllib.request.urlopen("http://placekitten.com/500/600")
kitten_img = response.read()
with open('kitten_img.jpg','wb') as f:
    f.write(kitten_img)

注意图片要放在.py文件目录下。跑完代码后,就看见新的kitten_img被’克隆’下来了

urllib.open()中的参数可以是一个Request的对象,也可以是一个url的字符串,所以

response =urllib.request.urlopen("http://placekitten.com/500/600")

等价于:

req = urllib.request.Request("http://placekitten.com/500/600")
response = urllib.request.urlopen(req)

该函数返回一个response对象,和文件对象相似,搜易可以用read方法读取。关于该对象还有以下方法:

response.geturl()  ##访问的具体地址。
response.info()##远程的服务器的信息
response.getcode()##http的状态

案例二:

在我们注册信息的时候,填写资料的时候,都涉及到表单(form)的应用。 是一个POST请求发送到服务器端的过程。 HTML中的表单时有特定格式的,举个例子,我们打开有道在线翻译,调出调试平台,输入翻译内容“Hello,Python”点击自动翻译 image 在调试平台中的network中我们可以看到一些常见的信息,如访问的具体的url地址,http的状态(200) image

也能看到表单。 image

我们将json格式的表单用字典的形式太表达。 通过urlencode将unicode转为unicode形式赋给response

這里补充下: decode:把其他编码变成unicode encode:把unicode转化为utf-8编码形式

import urllib.request
'''urllib中的parse用来对url解析'''
import urllib.parse
import json

url = 'http://fanyi.youdao.com/translate?smartresu    lt=dict&smartresult=rule&smartresult=ugc&sessionFro    m=https://www.google.com/'


data = {}
data['type']='AUTO'
data['i'] =  'Hello,Python'
data['doctype'] = 'json'
data['xmlVersion'] = '1.8'
data['keyfrom'] = 'fanyi.web'
data['ue'] = 'UTF-8'
data['typoResult'] = 'true'
data = urllib.parse.urlencode(data).encode('utf-8')

response = urllib.request.urlopen(url, data)
html=response.read().decode('utf-8')

target =json.loads(html)
print(target)

我们看到返回的target是

{'translateResult': [[{'src': 'Hello,Python', 'tgt': '你好,Python'}]], 'errorCode': 0, 'type': 'EN2ZH_CN', 'elapsedTime': 4}

我们看到翻译的内容在translateResult[0][0][‘tgt’]中

我们可以稍微修改代码,交互一下。用content变量存储你的输入

import urllib.request
'''urllib中的parse用来对url解析'''
import urllib.parse 
import json

url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartre    sult=ugc&sessionFrom=https://www.google.com/'
content = input("你想翻译什么呀?")

data = {}
data['type']='AUTO'
data['i'] = content
data['doctype'] = 'json'
data['xmlVersion'] = '1.8'
data['keyfrom'] = 'fanyi.web'
data['ue'] = 'UTF-8'
data['typoResult'] = 'true'
data = urllib.parse.urlencode(data).encode('utf-8')

response = urllib.request.urlopen(url, data)
html=response.read().decode('utf-8')

target =json.loads(html)

print ("翻译结果是:%s" %(target['translateResult'][0][0]['tgt']))

哈哈哈,我们开看结果: image

demo1源码在此 demo2

值得一提的是,這样对服务器的访问啦,服务器会屏蔽你哟,但是会有办法哒。后面再详细介绍!


蚊子再小也是肉~
本站总访问量 本站访客数