python3下的twisted

在python2中我们使用twisted比较方便,网上资料也比较多,但是通常在python3中使用的时候,并不能成功。我也是找了好多资料没有成功之后,自己去尝试做小白鼠,测试了很久之后,发现传递给twisted的所有数据都需要是bytes类型的。直接看代码吧(亲测可用):

from twisted.internet import reactor
from twisted.web.client import getPage
import urllib.parse

num = 0

a = []

def one_done(arg):
    global num
    print(type(arg))
    print(arg.decode())
    a.append(arg)
    num += 1
    if num == 3:
        reactor.stop()

cookies = {
    b‘123‘: b‘654‘
}
post_data = urllib.parse.urlencode({‘check_data‘: ‘adf‘})
post_data = bytes(post_data, encoding=‘utf8‘)
headers = {b‘Content-Type‘: b‘application/x-www-form-urlencoded‘}
for i in range(3):
    response = getPage(bytes(‘http://dig.chouti.com/login‘, encoding=‘utf8‘),
                       method=bytes(‘POST‘, encoding=‘utf8‘),
                       postdata=post_data,
                       headers=headers,
                       cookies=cookies)
    response.addBoth(one_done)

reactor.run()

print(a)
要注意的是,postdata这个字典是直接转换为字符串然后转换为bytes,headers和cookies只是将键和值转换为bytes类型了。

注意:postdata这个字典是直接转换为字符串然后转换为bytes,headers和cookies只是将键和值转换为bytes类型了。

时间: 2024-08-29 17:37:28

python3下的twisted的相关文章

Linux下安装Twisted报错

想要安装Scrapy爬虫框架就必须安装Twistedlinux下安装Twisted安装:$sudo pip install Twisted报错:error: Setup script exited with error: command 'x86_64-linux-gnu-gcc' failed with exit status 1原因缺少一依赖包对于Python 2.x使用:   $ sudo apt-get install python-dev对于Python 2.7使用:   $ sudo

python3下安装aiohttp遇到过的那些坑

python3下安装aiohttp遇到过的那些坑 最近需要用到aiohttp这个库,在安装过程中遇到很多坑.google.baidu后,依然没有找到合适的解决方案. 后来通过去python官方的PyPI查看aiohttp库,才发现一些问题,几经折腾,最后终于成功的在python3下安装’aiohttp’. 在这里跟大家分享一下被坑的过程. 先说一下环境.win7,64位.电脑里安装的python有3.5和3.6两个版本. 1. python3.6下安装aiohttp python3.6环境下,已

Python3下开启科学计算模式

Python(x,y)是一款很好的Python2科学计算的集成开发环境 但是Spyder,IPython感觉用起来总没有Winge 101来得流畅 而且Python3的出现,众多模块也具备了3的相对应版本 之前在Python3下开启pylab画图等模式时,总会出现许多问题 所以,总结了一下 import numpy as npimport scipy as spimport matplotlib as mplimport matplotlib.pyplot as pltfrom pylab im

在python3下使用peewee

在python3下使用peewee-2.1.4做ORM.连接MySQL数据库,提示需要MySQLdb模块,发现MySQLdb模块不支持python3,各种折腾.google不得其法. 然后又试着使用MySQL官方forPython驱动 Connector/Python需要对qeewee代码改动改动的渐入佳境,沾沾自喜中发现peewee的代码中有如下片段 try:import MySQLdb as mysqlexcept ImportError:try:import pymysql as mysq

Python3下map函数的问题

今天在群里有人问题,他的Python程序在家里运行好好的,但在公司一运行,就出问题了,查来查去查不出来,于是我就把他的程序调转过来看了一下,发现又是Python2.7与Python3的问题.代码是做了一个可定义任意位数的水仙花数函数 def fn(n):     rs = []     for i in range(pow(10,n-1),pow(10,n)):         rs = map(int, str(i))         sum = 0         for k in rang

论python3下“多态”与“继承”中坑

1.背景: 近日切换到python3后,发现python3在多态处理上,有一些比较有意思的情况,特别记载,供大家参考... 以廖老师的python3教程中的animal 和dog的继承一节的代码做例子,上代码先: #!/usr/bin/env python3 # -*- coding: utf-8 -*- class Animal(object): def run1(self): print('Animal is running 1...') def run2(self): self.run1(

python3下django连接mysql数据库

1.安装pymysql pip install pymysql 有一点需要注意,有的系统(比如ubuntu16.04)同时安装了python2和python3,而比较新的django需要在python3下运行,所以在安装pymysql时可能要使用命令 pip3 install pymysql 进行安装. 2.修改项目settings.py 找到并修改DATABASES为如下形式: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.m

Python3 下 Redis 返回 bytes 类型的问题

Python3 下 Redis 默认返回 bytes 类型数据,而 Python3 下 bytes 类型和 str 类型不能直接互用,容易出错,解决方法是在建立 Redis 连接的时候将 decode_responses 设置为 True,表示将返回的 bytes 数据解码为 str 数据 def __init__(self, host='localhost', port=6379, db=0, password=None, socket_timeout=None, socket_connect

python3下scrapy爬虫(第一卷:安装问题)

一般爬虫都是用urllib包,requests包 配合正则.beautifulsoup等包混合使用,达到爬虫效果,不过有框架谁还用原生啊,现在我们来谈谈SCRAPY框架爬虫, 现在python3的兼容性上来了,SCRAPY不光支持python2版本了,有新的不用旧的,现在说一下让很多人望而止步的安装问题,很多人开始都安装不明白, 当前使用的版本是PYTHON3.5,安装时用PIP3 安装步骤: 1 安装wheel pip3 install wheel 2 安装twisted pip3 insta