python填写金数据

  1 '''
  2 将 main 中的{url}改为真 url
  3 将 setd_data中 {姓名} {纬度} {经度} {地址} 改为确切数据
  4 数据自行参考post
  5 结果判断基于响应中是否包含“谢谢参与”字样
  6 '''
  7 import requests
  8 import re
  9 import time
 10 import random
 11 import datetime
 12 
 13 class JinShuJv:
 14     def __init__(self,url):
 15         self.url = url
 16         self.post_url = url
 17         self.header = None
 18         self.cookie = None
 19         self.data = None
 20 
 21     def set_header(self):
 22         """
 23         随机生成ip,设置X-Forwarded-For
 24         :return:
 25         """
 26         ip = '{}.{}.{}.{}'.format(112, random.randint(64, 68), random.randint(0, 255), random.randint(0, 255))
 27         self.header = {
 28             'Host': 'jinshuju.net',
 29             'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0',
 30             'Referer': self.url,
 31             'Origin': 'https://jinshuju.net',
 32             'X-Forwarded-For': ip
 33         }
 34 
 35     def get_response(self):
 36         """
 37         访问问卷网页,获取网页代码
 38         :return: get请求返回的response
 39         """
 40         response = requests.get(url=self.url, headers=self.header)
 41         self.cookie = response.cookies
 42         return response
 43 
 44     def get_authenticity_token(self,response):
 45         authenticity_token=re.search(r'(?<=name="csrf-token" content=")S+(==>?)',response.text)
 46         return authenticity_token.group()
 47 
 48     def set_data(self):
 49         response = self.get_response()
 50         authenticity_token = self.get_authenticity_token(response)
 51         now=str(datetime.date.today())
 52         def temperature():
 53             high=round(random.uniform(36.5,37.0),1)
 54             low=round(high-round(random.uniform(0.3,0.5),1),1)
 55             high=str(high)
 56             low=str(low)
 57             return [high,low]
 58 
 59         data={ }
 60         data.update({"utf8":""})  
 61         data.update({"authenticity_token":authenticity_token})
 62         data.update({"entry[field_6]":now})
 63         data.update({"entry[field_20]":"班级码"})
 64         data.update({"entry[field_11]":"{姓名}"})
 65         data.update({"entry[field_14]":temperature()[0]})
 66         data.update({"entry[field_40]":temperature()[1]})
 67         data.update({"entry[field_33]":"q348"})
 68         data.update({"entry[field_37]":"q348"})
 69         data.update({"entry[field_21]":temperature()[0]+'/'+temperature()[1]+','+temperature()[0]+'/'+temperature()[1]+','+temperature()[0]+'/'+temperature()[1]+','+temperature()[0]+'/'+temperature()[1]})
 70         data.update({"entry[field_38]":"q348"})
 71         data.update({"entry[field_35]":"q348"})
 72         data.update({"entry[field_18][latitude]":"{纬度}"})
 73         data.update({"entry[field_18][longitude]":"{经度}"})
 74         data.update({"entry[field_18][address]":"{地址}"})
 75         data.update({"entry[field_36]":"q348"})
 76         data.update({"entry[field_34]":""})
 77         data.update({"entry[field_39]":""})
 78         data.update({"embedded":""})
 79         data.update({"banner":""})
 80         data.update({"header":""})
 81         data.update({"background":""})
 82         data.update({"background_image":""})
 83         data.update({"form_margin":""})
 84         data.update({"code":""})
 85         data.update({"submit_link_generated_from":""})
 86         self.data=data
 87     
 88     def post_data(self):
 89         """
 90         发送数据给服务器
 91         :return: 服务器返回的结果
 92         """
 93         self.set_data()
 94         response = requests.post(url=self.post_url, data=self.data, headers=self.header, cookies=self.cookie)
 95         return response
 96 
 97     def run(self):
 98         self.set_header()
 99         result = self.post_data()
100         # print(result.content.decode())
101         if "谢谢参与" in result.content.decode():
102             print("success")
103         else:
104             print("fail")
105 
106 if __name__ == "__main__":
107     j=JinShuJv({url})
108     j.run()

参考:

https://www.jianshu.com/p/34961ceedcb4

原文地址:https://www.cnblogs.com/unknowcry/p/12712914.html