python报错defined_python问卷星报错NameError: name 'filename' is not defined

[Python] 纯文本查看 复制代码import sys

import getopt

from fake_useragent import UserAgent

from fake_useragent import FakeUserAgentError

import requests

from bs4 import BeautifulSoup

import re

import random

import time

import datetime

import os

import fake_info

import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

'''

作者:normanbb

链接:https://github.com/NormanBB/WJX_Autosubmit

来源:Github

'''

'''调查页面,获取相关参数'''

# 获取调查问卷的页面

def get_fill_content(url, user_agent):

headers = {

'user-agent': user_agent,

"Connection": "close"

}

r1 = requests.get(url, headers=headers,verify=False)

setCookie = r1.headers['Set-Cookie']

CookieText = re.findall(r'acw_tc=.*?;', setCookie)[0] + re.findall(r'\.ASP.*?;', setCookie)[0] + re.findall(r'jac.*?;', setCookie)[0] + re.findall(r'SERVERID=.*;',setCookie)[0]

return r1.text,CookieText

# 从页面中获取curid,rn,jqnonce,starttime,同时构造ktimes用作提交调查问卷

def get_submit_query(content):

curid = re.search(r'\d{8}',content).group()

rn = re.search(r'\d{9,10}\.\d{8}',content).group()

jqnonce= re.search(r'.{8}-.{4}-.{4}-.{4}-.{12}',content).group()

ktimes = random.randint(5, 18)

starttime = (datetime.datetime.now()-datetime.timedelta(minutes=1)).strftime("%Y/%m/%d %H:%M:%S")

return curid, rn, jqnonce, ktimes, starttime

#通过ktimes,jqnonce构造jqsign

def get_jqsign(ktimes, jqnonce):

result = []

b = ktimes % 10

if b == 0:

b = 1

for char in list(jqnonce):

f = ord(char) ^ b

result.append(chr(f))

return ''.join(result)

'''获取随机答案'''

# 获取调查问卷的题目

def get_title_list(content):

main_soup = BeautifulSoup(content, 'lxml')

title_soup_list = main_soup.find_all(id=re.compile(r'div\d'))

title_list = []

for title_soup in title_soup_list:

title_str = title_soup.find(class_='div_title_question').get_text().strip()

choice_list = [choice.get_text() for choice in title_soup.find_all('label')]

title_dict = {

'title': title_str,

'choice_list': choice_list,

'is_choice': len(choice_list) != 0

}

title_list.append(title_dict)

return title_list

# 随机选择

def random_choose(title_list):

answer_list = []

for title in title_list:

if title['is_choice']:

title['answer'] = random.randint(1, len(title['choice_list']))

else:

title['answer'] = ''

answer_list.append(title['answer'])

return answer_list

#构造符合样式的提交数据

def get_submit_data(title_list,answer_list):

form_data = ''

for num in range(len(title_list)):

form_data += str(num+1) + '$' + str(answer_list[num]) + '}'

return form_data[:-1]

def Auto_WjX(ip_list):

try:

user_agent = UserAgent().random

except FakeUserAgentError:

user_agent = proxy.get_agent()

#ip_list = proxy.choose_proxy(filename)

ip = random.choice(ip_list)

fill_content,cookies = get_fill_content(fill_url,user_agent)#网页源代码,cookies

title_list = get_title_list(fill_content) #所有题目

'''获取相关参数'''

curid, rn, jqnonce, ktimes,starttime = get_submit_query(fill_content)

jqsign = get_jqsign(ktimes,jqnonce)

time_stamp = '{}{}'.format(int(time.time()), random.randint(100, 200)) # 生成一个时间戳,最后三位为随机数

#curid, time_stamp, starttime, ktimes, rn, jqnonce, jqsign

FormData = {

'submittype': '1',

'curID': curid,

't': time_stamp,

'starttime': starttime,

'rn': rn,

'hlv': '1',

'ktimes':ktimes,

'jqnonce':jqnonce,

'jqsign':jqsign,

}

url = 'https://www.wjx.cn/joinnew/processjq.ashx'

headers = {

"Host": "www.wjx.cn",

"Connection": "close",

"User-Agent": user_agent,

"Content-Type": "application/x-www-form-urlencoded",

"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",

"Accept-Encoding": "gzip, deflate, br",

"Accept-Language": "en, zh-CN;q=0.9, zh;q=0.8",

"Referer": fill_url,

"Cookie": cookies,

}

#作随机选择

random_data = random_choose(title_list)

#构造符合样式的提交数据

#自定义答案可以将选择与构造部分去除

submit_data = get_submit_data(title_list,random_data)

data = {'submitdata':str(submit_data)}

#data = {'submitdata': '1$2}2$1}3$2}4$2}5$1}6$1}7$1}8$3}9$3}10$1}11$2}12$2}13$1'}

# 发送请求

try:

r = requests.post(url=url, headers=headers, data=data, params=FormData, proxies={

"https":ip}, verify=False, timeout=10)

#通过测试返回数据中表示成功与否的关键数据(’10‘or '22s')在开头,所以只需要提取返回数据中前两位元素

result = r.text[0:2]

return result

except(requests.exceptions.ProxyError,requests.exceptions.ConnectTimeout):

print(f'代{过}{滤}理 {ip} 不可用')

ip_list.remove(ip)

except requests.exceptions.ReadTimeout:

pass

def main(times):

PostNum = 0

times=int(times)

print('程序开始运行')

ip_list = proxy.choose_proxy(filename)

# i 为 提交次数

# 若需达到某特定次数

#while i < Postnum:

for i in range(times):

try:

result= Auto_WjX(ip_list)

if int(result) in [10]:

print('[ Response : %s ] ===> 提交成功!!!!' % result)

PostNum += 1

time.sleep(5) # 设置休眠时间,这里要设置足够长的休眠时间

else:

print('[ Response : %s ] ===> 提交失败!!!!' % result)

#捕获错误

except(TypeError,IndexError,ValueError):

#print('跳过')

continue

print('程序运行结束,成功提交%s份调查报告' % PostNum) # 总结提交成功的数量,并打印

os.remove(filename)

for i in ip_list:

with open(filename, 'a+') as f:

f.write('{0}\n'.format(format(i)))

def various_options():

#根据参数匹配不同条件

global filename

opts,args = getopt.getopt(sys.argv[1:], '-p-l-h', ['pool', 'list', 'help'])

for opt_name, opt_value in opts:

if opt_name in ('-p', '--pool'):

try:

if os.path.exists('proxy_pool_temp.list'):

continue

else:

try:

if os.path.exists('proxy_pool.list'):

continue

else:

print('use proxy from github.com/jhao104/proxy_pool')

proxy.get_proxy('pool')

finally:

proxy.validate_proxy('proxy_pool.list')

finally:

filename = 'proxy_pool_temp.list'

print('使用验证proxy_pool代{过}{滤}理')

elif opt_name in ('-l', '--list'):

try:

if os.path.exists('proxy_list_temp.list'):

continue

else:

try:

if os.path.exists('proxy_list.list'):

continue

else:

print('use proxy from www.proxy-list.download')

proxy.get_proxy('list')

finally:

proxy.validate_proxy('proxy_list.list')

finally:

filename = 'proxy_list_temp.list'

print('使用验证proxy-list代{过}{滤}理')

elif opt_name in ('-h', '--help'):

print(r'''

Usage: WJX_Autosubmit.py [OPTIONS]

Options:

-p or --pool Use proxy from github.com/jhao104/proxy_pool

-l or --list Use proxy from www.proxy-list.download

-h or --help Show this message and exit.

'''

)

sys.exit()

if __name__ == '__main__':

print(r"""

本程序用于构建随机答案填写问卷星问卷

""")

proxy = fake_info.proxy()

various_options()

fill_url = input('输入问卷地址:')

times = input('输入提交次数:')

main(times)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

do matlab的 while循环_除了Matlab,基本上所有的语言都有do-while语句吧?的相关推荐_ChinaUnix论坛...

相关讨论有谁在精通c的同时,又对matlab得心应手,问个问题:在matlab中读文件需要注意什么?比如:从一个文件中循环1万次,每次读9个浮点型的数,该如何写代码?我用了fidfopen(u.txt r);for i1:10000;Afscanf(fid,%f,9); %将9个数保存到向量A中............ %进行一些计算;endfclo…

计算机三级数据库上机怎么考,最新计算机三级数据库上机考试试题

最新计算机三级数据库上机考试试题数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度的特点、是与应用程序彼此独立的数据集合。下文为大家搜集整理的是计算机三级数据库技术考试题&#xff0c;希望能帮助大家好好复习&#xff0c;早日通过考试!第一题…

用户表如何区分普通用户和管理员_Gate.io 比特百科:什么是ETH 2.0及普通用户如何参与ETH 2.0质押挖矿...

ETH 2.0是什么ETH 2.0是ETH发展四阶段&#xff08;1、前沿Frontier 2、家园Homestead 3、大都会Homestead 4、宁静Serenity&#xff09;中的最后一个阶段。前三个阶段是ETH 1.0时期&#xff0c;而第四阶段ETH1.0正式升级为ETH 2.0&#xff0c;将从PoW工作量证明共识机制升级为P…

swift 原生给h5发消息_Swift - 使用HTML5进行iOS开发(将HTML5打包成iOS应用)

下面简单介绍下如何把HTML5编写的页面编译成iOS应用&#xff0c;以及如何让页面与Swift代码进行交互。(本文代码已升级至Swift3)1&#xff0c;使用UIWebView还是WKWebView来加载html页面原来我们一直使用UIWebView来加载web页面。从iOS8起&#xff0c;苹果提供了WKWebView用来代…

南充一中计算机机房被盗,成都理工大学与南充市第一中学共建优质生源基地

春秋代序立冬过&#xff0c;西河欢歌扬碧波&#xff1b;魅力一中呈诗韵&#xff0c;银杏绽黄迎嘉客。2019年11月14日上午10时&#xff0c;成都理工大学与南充市第一中学共建优质生涯基地的签约授牌仪式在南充一中新区隆重举行。南充一中副校长王洪秀在致辞中对关注南充一中发展…

list循环赋值_Python基础 | 0xd 条件判断与循环

条件判断所谓的条件判断就是根据一条或多条语句的执行结果(True/False)来决定执行那一块的代码。// 条件判断的三个关键字 //Python 使用if、else、elif 三个关键字的搭配来实现判断语句&#xff0c;使用示例如下&#xff1a;# 单分支(只有一个if)&#xff0c;如果代码块只有一…

matlab 等高线_MATLAB作图实例:39:更改等高线图的填充颜色

本示例说明如何更改在填充等高线图中使用的颜色。更改颜色模板通过更改颜色图设置填充等高线图的颜色。将预定义的颜色图名称hot传递给colormap函数。[X,Y,Z] peaks;figurecontourf(X,Y,Z,20)colormap(hot)title(Hot Colormap)控制数据值到颜色模板的映射仅使用hot模板中心的颜…

git保存账号密码_Altium Designer 通过Git实现版本控制

为了解决每次对PCB工程进行修改时不能回溯的问题&#xff0c;以及为日后团队协作完成某项工程提供方便&#xff0c;所以我研究了一下如何在AD中实现版本控制。所幸的是&#xff0c;AD本身自带VCS功能(Version Control System)&#xff0c;并支持SVN和Git两种VCS方式前提条件&am…

计算机字体原理,字体图标生成原理(1)

浏览器根据font-family解析渲染为不同图形的过程&#xff1a;1&#xff1a;读取文字内容转换成对应的 unicode码()计算机操作系统里面每个字符都有一个unicode编码,比如我们在web上输入\u6211跟输入“我”是一样的&#xff0c;因为「我」的unicode是\u6211(16进制)&#xff0…

asp 取菜单的名字_这样的奶茶店菜单设计,店面营业额能提高30%!

菜单是顾客了解奶茶店饮品品类、满足期待的一个载体&#xff0c;起着向顾客传递产品信息结构、激起购买欲望的重要作用。那么到底该怎么设计菜单才能吸引顾客呢&#xff1f;一、菜单风格要与品牌相符奶茶店的菜单设计风格一定要与品牌定位保持一致&#xff0c;着重突出店铺的风…

python ui自动化测试框架_Python自动化测试框架

PythonunittestrequestsHTMLTestRunner框架1 目录说明common&#xff1a;公共文档&#xff0c;存放包含HTMLTestRunner.py&#xff0c;logUtils.py等公用文件data&#xff1a;数据文档&#xff0c;存放测试数据&#xff1b;接口数据使用excel存储log&#xff1a;存放日志文件re…

计算机键盘怎么换键,笔记本电脑如何切换键盘_笔记本切换键盘的步骤-win7之家...

键盘是我们使用电脑必不可少的输入设备&#xff0c;在使用过程中&#xff0c;有时候需要进行键盘切换&#xff0c;比如数字和字母之间的切换&#xff0c;台式电脑切换比较简单&#xff0c;因为它字母跟数字键盘会分开&#xff0c;但是如果是笔记本电脑的话&#xff0c;要如何切…

geojson地图_Geojson地图pandas数据帧

geojson数据结构geojson作图方法geojson与pandashttps://blog.exploratory.io/visualizing-geospatial-data-with-your-own-geojson-f96dde0f6296​blog.exploratory.io数据结构GeoJSON是用于表示地理对象的格式。 它与常规JSON不同&#xff0c;因为它支持几何类型&#xff0c;…

views 多个文件夹 netcore_.NET Core 分发打包

由于 .NET Core 现已可用于更多平台&#xff0c;因此了解如何为其打包、命名并进行版本控制将很有用。 这样&#xff0c;无论用户选择在哪里运行 .NET&#xff0c;包维护人员均可以帮助确保获得一致的体验。 本文对以下用户非常有用&#xff1a;尝试从源生成 .NET Core。想要更…

dz论坛服务器技术支持,服务器更换 升级 dz论坛首页 dz其他页面打开为空白解决方法...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼1.症状&#xff1a;安装后一切正常&#xff0c;昨天发完nnn个帖子后突然论坛首页打开后空白2.解决办法&#xff1a;删除以下两个文件夹下所有文件forumdata/cache 和 /forumdata/templates3. 之后出现提示&#xff1a;Cache List: …

erlang安装_消息中间件(八)- RabbitMQ - 安装

步骤1:erlang步骤2:erlang 安装程序步骤3:配置路径步骤4:运行测试步骤5:安装 rabbitMQ步骤6:配置插件步骤7:重启 rabbitmq步骤8:管理员身份步骤9:重启 rabbitmq步骤10:访问管理界面步骤11:管理界面步骤 1 : erlangrabbitMQ 是基于 erlang 语言开发的&#xff0c;就如同 activem…

ihtml2document能不能根据id获取dom_使用DOM进行XML文件的解析

1. 什么是XML&#xff1f;xml是格式化的纯文本&#xff0c;用于存储数据和格式。2. DOM是什么&#xff1f;DOM是xml的一种解析方法&#xff08;此外还包括SAX等&#xff0c;此处不提&#xff09;&#xff0c;它将xml文件抽象成为一个树型结构&#xff0c;这棵树个各个树叶就是节…

青茶什么时候拆_为什么日本绿茶那么绿?比中国的高级绿茶还要绿

我们经常可以从电影、电视、动画片、日式抹茶看到日本绿茶所呈现出来的样子&#xff0c;绿的&#xff0c;鲜脆欲滴的绿。到了日本&#xff0c;待客之道泡煎茶&#xff0c;可以更直观的看到煎茶的绿&#xff0c;这种绿是我们在国内不曾见到的绿&#xff0c;中国的高级绿茶也呈现…

单台web服务器性能,单台web服务器如何尽可能的提高网站性能

我觉得首先要选择一个合适的环境&#xff0c;对于大多数php站点来说&#xff0c;运行在lnmp(linuxnginxmysqlphp)环境下是个理想的选择.首先一点linux对比win的优势我就不说了。其次nginx的优势总结起来就是负载均衡&#xff0c;高并发性能优异。这里php采用fastcgi的方式接入n…

如何将dataset中的值赋值给datatable_金融行业实战项目:如何理解业务?

【面试题】下表是某金融App的数据&#xff0c;请结合Excel数据集中的数据完成下列问题(某金融公司面试题&#xff0c;文末有数据下载 )原始数据如下所示&#xff1a;为方便后期分析&#xff0c;我们对数据进行分类。数据通常分为3类&#xff1a;用户数据、行为数据、产品数据。…