日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2024/7/23 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)

總結

以上是生活随笔為你收集整理的python报错defined_python问卷星报错NameError: name 'filename' is not defined的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。