Python 爬虫 (二)
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 爬虫 (二)相关推荐
- [Python爬虫] 二、爬虫原理之定义、分类、流程与编码格式
往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 一.爬虫的定义.分类和流程 爬虫定义 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求 ...
- Python爬虫(二)——多线程下载壁纸图片(星月设计网)
文章目录 Python爬虫--多线程下载图片(星月设计网) 目的: redis存储结构: 使用到的python库: 1. 导入相关库 2. 连接redis 3.爬虫主要类及函数 4.爬取结果: Pyt ...
- Python 爬虫二 requests模块
requests模块 Requests模块 get方法请求 整体演示一下: import requestsresponse = requests.get("https://www.baidu ...
- Python爬虫(二)_urllib2的使用
所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地.在Python中有很多库可以用来抓取网页,我们先学习urllib2. urllib2是Python2.x自带的模块(不需要 ...
- Python爬虫(二十一)_Selenium与PhantomJS
本章将介绍使用Selenium和PhantomJS两种工具用来加载动态数据,更多内容请参考:Python学习指南 Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试 ...
- python爬虫二十四:js逆向破解(一)
1.环境搭建 通过python代码模拟js去生成加密数据完成数据破解,需要用到PyExecJS模块 ①安装模块pip install pyexecjs通过模块的方法来读取js代码,也可以用js2py( ...
- python爬虫(二)_HTTP的请求和响应
HTTP和HTTPS HTTP(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收HTML页面的方法 HTTPS(HyperText Transfer Prot ...
- python爬取网页上的特定链接_自学python爬虫二:如何正常操作urllib2通过指定的URL抓取网页内容...
所谓网页抓取, 就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地. 类似于使用程序模拟IE浏览器的功能,把URL作为HTTP请求的内容发送到服务器端, 然后读取服务器端的响应资源. 在P ...
- Python爬虫(二十二)_selenium案例:模拟登陆豆瓣
本篇博客主要用于介绍如何使用selenium+phantomJS模拟登陆豆瓣,没有考虑验证码的问题,更多内容,请参考:Python学习指南 #-*- coding:utf-8 -*-from sele ...
最新文章
- 面试---如何在List<Integer>中如何存放String类型的数据?
- 看你的样子对Vue研究挺深的,我司招Vue,五险一金有兴趣吗?
- probability space 概率空间,Filtration,σ-algebras
- 前端学习(2512):组件注册
- php 多数据库联合查询,php如何同时连接多个数据库_PHP教程
- Linux系统的启动引导过程(转)
- Ubuntu IP设置为静态
- VMware Workstation 12.5 安装Mac OS X
- Linux服务笔记之一:Telnet远程登录
- python程序-第一个Python程序——在屏幕上输出文本
- Spark如何定位导致数据倾斜的代码
- _IO, _IOR, _IOW, _IOWR 宏的用法与解析
- cocos2d-x-2.2.1环境搭建
- poj-1190 生日蛋糕 **
- python-gui-pyqt5的使用方法-1
- 练习4.1 根据后序和中序遍历输出先序遍历 (25 分)
- 《Java完全参考手册》总结(1)
- python毕业设计作品基于django框架校园排课选课系统毕设成品(6)开题答辩PPT
- java绘制雷达图_【带着canvas去流浪(6)】绘制雷达图
- 基于搜狗平台的微信文章爬虫