cookiejar模块:

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

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

 1 import json
 2 from urllib import request,parse
 3 from http import cookiejar
 4
 5 #实例化一个cookiejar对象
 6 cookiejar_object = cookiejar.CookieJar()
 7 #生成cookie管理器
 8 cookie_handler = request.HTTPCookieProcessor(cookiejar_object)
 9 #有了opener,就可以代替urlopen来进行请求网页
10 opener = request.build_opener(cookie_handler)
11
12
13 #获取网页的登陆接口
14 url = 'http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=2018721532875'
15
16 #将网页的form信息获取
17 form = {
18     'email':'xxx',
19     'icode':'',
20     'origURL':'http://www.renren.com/home',
21     'domain':'renren.com',
22     'key_id':'1',
23     'captcha_type':'web_login',
24     'password':'xxx',
25     'rkey':'79d8184f25d678248262a91caf3e7ea8',
26     'f':'http%3A%2F%2Fzhibo.renren.com%2Ftop',
27 }
28
29
30 #将数据转换成二进制
31 form_b = parse.urlencode(form).encode('utf-8')
32
33 #将url和表单信息,还有获取到的cookie去访问网页
34 response = opener.open(url,form_b)
35 html_b = response.read()#字节类型
36 # print(html_b)
37
38
39 res_dict = json.loads(html_b.decode('utf-8'))
40 #获取登陆后的个人主页url
41 home_url = res_dict['homeUrl']
42
43 # print(home_url)
44 # 访问个人主页
45 response = opener.open(home_url)
46 html_bytes = response.read()
47 print(html_bytes.decode('utf-8'))

python Proxy代理

 1 from urllib import request
 2
 3 proxy = {
 4     'http': 'http://219.141.153.41:80'
 5 }
 6
 7 url = 'http://www.baidu.com/s?wd=ip'
 8 # request.HTTPCookieProcessor(cookie)
 9 handler = request.ProxyHandler(proxy)
10
11 # 生成 opener.open = urlopen
12 opener = request.build_opener(handler)
13
14 # 同过opener访问百度
15
16 response = opener.open(url, timeout=5)
17 # 存储页面
18 with open('baidu.html', 'wb') as f:
19     f.write(response.read())

有道词典翻译接口

 1 import time
 2 import random
 3 import json
 4 from Day1.tuozhan_all import post
 5
 6 def md5_my(need_str):
 7     import hashlib
 8     # 创建md5对象
 9     md5_o = hashlib.md5()
10     # 需要有bytes, 作为参数
11     # 由str, 转换成 bytes encode-------str.encode('utf-8')
12     # 由bytes转换成 str, decode---------bytes.decode('utf-8')
13     sign_bytes = need_str.encode('utf-8')
14     # 更新md5 object的值
15     md5_o.update(sign_bytes)
16     sign_str = md5_o.hexdigest()
17     return sign_str
18
19 # url
20
21 def translate(kw):
22     url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
23
24     headers = {
25         'Accept': 'application/json, text/javascript, */*; q=0.01',
26         'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
27         'Connection': 'keep-alive',
28         'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
29         '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',
30         'Host': 'fanyi.youdao.com',
31         'Origin': 'http://fanyi.youdao.com',
32         'Referer': 'http://fanyi.youdao.com/',
33         'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
34         'X-Requested-With': 'XMLHttpRequest',
35     }
36
37
38     # form 的生成1. i 需要确定, 2, salt, 3, sign
39     key= kw
40
41     # salt : ((new Date).getTime() + parseInt(10 * Math.random(), 10))
42     salt = int(time.time()*1000 + random.randint(0,10))
43     print('salt:',salt)
44     salt_str = str(salt)
45
46     # sign : o = u.md5(S + n + r + D);
47     # S = "fanyideskweb"
48     # D = "ebSeFb%=XZ%T[KZ)c(sy!"
49     # n = key
50     # r = salt_str
51     S = "fanyideskweb"
52     D = "ebSeFb%=XZ%T[KZ)c(sy!"
53     sign_str = S + key + salt_str + D
54     # md5 加密的方法
55     sign_md5_str = md5_my(sign_str)
56
57     form = {
58         'i': key,
59         'from': 'AUTO',
60         'to': 'AUTO',
61         'smartresult': 'dict',
62         'client': 'fanyideskweb',
63         'salt': salt_str,
64         'sign': sign_md5_str,
65         'doctype': 'json',
66         'version': '2.1',
67         'keyfrom': 'fanyi.web',
68         'action': 'FY_BY_REALTIME',
69         'typoResult': 'false',
70     }
71
72     html_bytes = post(url, form, headers=headers)
73
74     # 将 json 类型的 str, 转化成, 字典
75     res_dict = json.loads(html_bytes.decode('utf-8'))
76     #print(html_bytes.decode('utf-8'))
77
78     translate_res = res_dict['translateResult'][0][0]['tgt']
79     return translate_res
80
81 if __name__ == '__main__':
82     ret = translate('中国')
83
84     print('翻译的结果:' + ret)

转载于:https://www.cnblogs.com/pantom0122/p/9478091.html

Python 爬虫 (二)相关推荐

  1. [Python爬虫] 二、爬虫原理之定义、分类、流程与编码格式

    往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 一.爬虫的定义.分类和流程 爬虫定义 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求 ...

  2. Python爬虫(二)——多线程下载壁纸图片(星月设计网)

    文章目录 Python爬虫--多线程下载图片(星月设计网) 目的: redis存储结构: 使用到的python库: 1. 导入相关库 2. 连接redis 3.爬虫主要类及函数 4.爬取结果: Pyt ...

  3. Python 爬虫二 requests模块

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

  4. Python爬虫(二)_urllib2的使用

    所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地.在Python中有很多库可以用来抓取网页,我们先学习urllib2. urllib2是Python2.x自带的模块(不需要 ...

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

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

  6. python爬虫二十四:js逆向破解(一)

    1.环境搭建 通过python代码模拟js去生成加密数据完成数据破解,需要用到PyExecJS模块 ①安装模块pip install pyexecjs通过模块的方法来读取js代码,也可以用js2py( ...

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

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

  8. python爬取网页上的特定链接_自学python爬虫二:如何正常操作urllib2通过指定的URL抓取网页内容...

    所谓网页抓取, 就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地. 类似于使用程序模拟IE浏览器的功能,把URL作为HTTP请求的内容发送到服务器端, 然后读取服务器端的响应资源. 在P ...

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

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

最新文章

  1. 面试---如何在List<Integer>中如何存放String类型的数据?
  2. 看你的样子对Vue研究挺深的,我司招Vue,五险一金有兴趣吗?
  3. probability space 概率空间,Filtration,σ-algebras
  4. 前端学习(2512):组件注册
  5. php 多数据库联合查询,php如何同时连接多个数据库_PHP教程
  6. Linux系统的启动引导过程(转)
  7. Ubuntu IP设置为静态
  8. VMware Workstation 12.5 安装Mac OS X
  9. Linux服务笔记之一:Telnet远程登录
  10. python程序-第一个Python程序——在屏幕上输出文本
  11. Spark如何定位导致数据倾斜的代码
  12. _IO, _IOR, _IOW, _IOWR 宏的用法与解析
  13. cocos2d-x-2.2.1环境搭建
  14. poj-1190 生日蛋糕 **
  15. python-gui-pyqt5的使用方法-1
  16. 练习4.1 根据后序和中序遍历输出先序遍历 (25 分)
  17. 《Java完全参考手册》总结(1)
  18. python毕业设计作品基于django框架校园排课选课系统毕设成品(6)开题答辩PPT
  19. java绘制雷达图_【带着canvas去流浪(6)】绘制雷达图
  20. 基于搜狗平台的微信文章爬虫

热门文章

  1. 安卓证书安装为系统证书(模拟器版)
  2. SHELL脚本编程练习题
  3. IDEA设置护眼模式
  4. 剖析特洛伊木马(转)
  5. hdu 6169 gems gems gems【DP】
  6. CentOS 7 如何查询硬件信息
  7. 读《浪潮之巅》后感2
  8. C++ 编程基础练习——贴现分期贷款问题
  9. ijkPlayer编译-Android
  10. 《利用python进行数据分析》勘误