cookiejar模块:

  • 管理储存cookie,将传出的http请求添加cookie
  • cookie存储在内存中,CookieJar示例回收后cookie将自动消失

实例:用cookjar访问人人网主页

 import json
from urllib import request,parse
from http import cookiejar #实例化一个cookiejar对象
cookiejar_object = cookiejar.CookieJar()
#生成cookie管理器
cookie_handler = request.HTTPCookieProcessor(cookiejar_object)
#有了opener,就可以代替urlopen来进行请求网页
opener = request.build_opener(cookie_handler) #获取网页的登陆接口
url = 'http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=2018721532875' #将网页的form信息获取
form = {
'email':'xxx',
'icode':'',
'origURL':'http://www.renren.com/home',
'domain':'renren.com',
'key_id':'',
'captcha_type':'web_login',
'password':'xxx',
'rkey':'79d8184f25d678248262a91caf3e7ea8',
'f':'http%3A%2F%2Fzhibo.renren.com%2Ftop',
} #将数据转换成二进制
form_b = parse.urlencode(form).encode('utf-8') #将url和表单信息,还有获取到的cookie去访问网页
response = opener.open(url,form_b)
html_b = response.read()#字节类型
# print(html_b) res_dict = json.loads(html_b.decode('utf-8'))
#获取登陆后的个人主页url
home_url = res_dict['homeUrl'] # print(home_url)
# 访问个人主页
response = opener.open(home_url)
html_bytes = response.read()
print(html_bytes.decode('utf-8'))

python Proxy代理

 from urllib import request

 proxy = {
'http': 'http://219.141.153.41:80'
} url = 'http://www.baidu.com/s?wd=ip'
# request.HTTPCookieProcessor(cookie)
handler = request.ProxyHandler(proxy) # 生成 opener.open = urlopen
opener = request.build_opener(handler) # 同过opener访问百度 response = opener.open(url, timeout=5)
# 存储页面
with open('baidu.html', 'wb') as f:
f.write(response.read())

有道词典翻译接口

 import time
import random
import json
from Day1.tuozhan_all import post def md5_my(need_str):
import hashlib
# 创建md5对象
md5_o = hashlib.md5()
# 需要有bytes, 作为参数
# 由str, 转换成 bytes encode-------str.encode('utf-8')
# 由bytes转换成 str, decode---------bytes.decode('utf-8')
sign_bytes = need_str.encode('utf-8')
# 更新md5 object的值
md5_o.update(sign_bytes)
sign_str = md5_o.hexdigest()
return sign_str # url def translate(kw):
url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule' headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Connection': 'keep-alive',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Cookie': 'OUTFOX_SEARCH_USER_ID=-493176930@10.168.8.63; OUTFOX_SEARCH_USER_ID_NCOO=38624120.26076847; SESSION_FROM_COOKIE=unknown; JSESSIONID=aaabYcV4ZOU-JbQUha2uw; ___rl__test__cookies=1534210912076',
'Host': 'fanyi.youdao.com',
'Origin': 'http://fanyi.youdao.com',
'Referer': 'http://fanyi.youdao.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest',
} # form 的生成1. i 需要确定, 2, salt, 3, sign
key= kw # salt : ((new Date).getTime() + parseInt(10 * Math.random(), 10))
salt = int(time.time()*1000 + random.randint(0,10))
print('salt:',salt)
salt_str = str(salt) # sign : o = u.md5(S + n + r + D);
# S = "fanyideskweb"
# D = "ebSeFb%=XZ%T[KZ)c(sy!"
# n = key
# r = salt_str
S = "fanyideskweb"
D = "ebSeFb%=XZ%T[KZ)c(sy!"
sign_str = S + key + salt_str + D
# md5 加密的方法
sign_md5_str = md5_my(sign_str) form = {
'i': key,
'from': 'AUTO',
'to': 'AUTO',
'smartresult': 'dict',
'client': 'fanyideskweb',
'salt': salt_str,
'sign': sign_md5_str,
'doctype': 'json',
'version': '2.1',
'keyfrom': 'fanyi.web',
'action': 'FY_BY_REALTIME',
'typoResult': 'false',
} html_bytes = post(url, form, headers=headers) # 将 json 类型的 str, 转化成, 字典
res_dict = json.loads(html_bytes.decode('utf-8'))
#print(html_bytes.decode('utf-8')) translate_res = res_dict['translateResult'][0][0]['tgt']
return translate_res if __name__ == '__main__':
ret = translate('中国') print('翻译的结果:' + ret)

Python 爬虫 (二)的更多相关文章

  1. Python爬虫二

    常见的反爬手段和解决思路 1)明确反反爬的主要思路 反反爬的主要思路就是尽可能的去模拟浏览器,浏览器在如何操作,代码中就如何去实现;浏览器先请求了地址url1,保留了cookie在本地,之后请求地址u ...

  2. Python 爬虫二 requests模块

    requests模块 Requests模块 get方法请求 整体演示一下: import requests response = requests.get("https://www.baid ...

  3. Python爬虫(二十一)_Selenium与PhantomJS

    本章将介绍使用Selenium和PhantomJS两种工具用来加载动态数据,更多内容请参考:Python学习指南 Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试 ...

  4. python爬虫(二)--了解deque

    队列-deque 有了上面一节的基础.当然你须要全然掌握上一节的全部方法,由于上一节的方法.在以下的教程中 会重复的用到. 假设你没有记住,请你返回上一节. http://blog.csdn.net/ ...

  5. python爬虫(二)_HTTP的请求和响应

    HTTP和HTTPS HTTP(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收HTML页面的方法 HTTPS(HyperText Transfer Prot ...

  6. Python爬虫(二十四)_selenium案例:执行javascript脚本

    本章叫介绍如何使用selenium在浏览器中使用js脚本,更多内容请参考:Python学习指南 隐藏百度图片 #-*- coding:utf-8 -*- #本篇将模拟执行javascript语句 fr ...

  7. Python爬虫(二十三)_selenium案例:动态模拟页面点击

    本篇主要介绍使用selenium模拟点击下一页,更多内容请参考:Python学习指南 #-*- coding:utf-8 -*- import unittest from selenium impor ...

  8. Python爬虫(二十二)_selenium案例:模拟登陆豆瓣

    本篇博客主要用于介绍如何使用selenium+phantomJS模拟登陆豆瓣,没有考虑验证码的问题,更多内容,请参考:Python学习指南 #-*- coding:utf-8 -*- from sel ...

  9. Python爬虫(二十)_动态爬取影评信息

    本案例介绍从JavaScript中采集加载的数据.更多内容请参考:Python学习指南 #-*- coding:utf-8 -*- import requests import re import t ...

  10. Python 爬虫(二十五) Cookie的处理--cookielib库的使用

    Python中cookielib库(python3中为http.cookiejar)为存储和管理cookie提供客户端支持. 该模块主要功能是提供可存储cookie的对象.使用此模块捕获cookie并 ...

随机推荐

  1. SQL Server 使用 OUTPUT做数据操作记录

    OUTPUT 子句 可以在数据进行增删改的时候,可以返回受影响的行.先准备一张表 create table #t ( id int identity primary key ,name ) ) go ...

  2. 证书制作 z

    一.WCF中的安全方式 说到安全就会涉及到认证,消息一致性和机密性,WCF的安全方式分为两种,即传输安全和消息安全. 传输安全和消息安全的区别:传输安全提供点对点的安全: 比如 A 提供服务,B和C直 ...

  3. kivy.org - Open source Python library for rapid development of applications

    kivy.org - Open source Python library for rapid development of applicationsthat make use of innovati ...

  4. WIN7与WIN10 安装

    ---恢复内容开始--- 开始的操作系统是黑白屏的DOS,随着光标的一闪一闪并逐渐后移,一条条指令输入电脑,并执行相关指令完成任务.慢慢的,视窗操作系统最初是基于DOS的windows 9X内核WIN ...

  5. PHP实现无限分类

    PHP实现无限分类 无限分类 递归 无限级分类是一种设计技巧,在开发中经常使用,例如:网站目录.部门结构.文章分类.笔者觉得它在对于设计表的层级结构上面发挥很大的作用,比如大家在一些平台上面,填写邀请 ...

  6. asp.net c# 断点续传 下载 Accept-Ranges

    转自:http://www.cnblogs.com/90nice/p/3489287.html 1.因为要下载大文件 需要断点续传,使用多线程 分段下载 效率比较高,节省资源. 发点牢骚:下载可以用多 ...

  7. SAP云平台对Kubernetes的支持

    截至本文发稿(2019-2-10, 农历大年初六)时为止,访问SAP云平台的官方网站:https://cloudplatform.sap.com/enterprise-paas/kubernetes. ...

  8. 026json和pickle,xml模块

    ###json和pickle ##json#dumps()data = #源数据data = json.dumps(data)这时候的data可以写入到文件了#loads()data = f.read ...

  9. 在.Net项目中使用Redis作为缓存服务

    转自:http://www.cnblogs.com/hohoa/p/5771255.html 最近由于项目需要,在系统缓存服务部分上了redis,终于有机会在实际开发中玩一下,之前都是自己随便看看写写 ...

  10. 访问服务器,远程访问linux主机

    ssh conch@+ip地址,输入密码后就可以访问并使用服务器了.登录服务器之后,xbwang@xbwang-desktop:~$变成了conch@conchdev:~$ ,这样你就可以像使用普通电 ...