Python 파충류 자동화 로 화투 와 분필 사이트 의 오 류 를 얻 기(추천)

이 블 로 그 는 공인 이나 다른 화투 나 분필 로 문 제 를 푸 는 사람들 에 게 친절 하 며,인터넷 주 소 를 입력 하면 화투 와 분필 연습 의 오 류 를 자동화 할 수 있다.
분필 사이트
저희 가 했 던 문제 팀 에서 오 답 을 얻 었 어 요.
在这里插入图片描述
在这里插入图片描述
어떤 문제 풀이 팀 을 열 고,우 리 는 먼저 패 키 지 를 해서 데이터 가 어디 에 있 는 지 보 자.
在这里插入图片描述
우 리 는 현재 데이터 가 이미 숨겨 져 있다 는 것 을 발견 했다.사실상 데 이 터 는 이 두 가방 에 있다.
https://tiku.fenbi.com/api/xingce/questions
https://tiku.fenbi.com/api/xingce/solutions
하 나 는 제목 이 고 하 나 는 해석 이다.이 url 은 제목 그룹 인 자 를 입력 해 야 현재 제목 데 이 터 를 얻 을 수 있 으 며,제목 그룹 인 자 는 이 가방 에 있 습 니 다.
在这里插入图片描述
인터넷 주소 의 마지막 두 번 째 숫자 로 연결 되 어 있 습 니 다.
在这里插入图片描述
url 의 규칙 은'https://tiku.fenbi.com/api/xingce/exercises/'+str(id_)+'?app=web&kav=12&version=3.0.0.0',id밑줄 숫자
이 가방 을 통 해 파 라 메 터 를 가 져 오고 파 라 메 터 를 통 해 위의 두 가방 을 요청 합 니 다(

https://tiku.fenbi.com/api/xingce/questions
https://tiku.fenbi.com/api/xingce/solutions
)문제 데 이 터 를 얻 을 수 있 고 자신의 답 도https://tiku.fenbi.com/api/xingce/exercises/'+str(id_)+'?app=web&kav=12&version=3.0.0.0이 가방 에 있 습 니 다.
그러나 분필 의 제목 데 이 터 는 그림 이 고 그림 은 제목 에 있 습 니 다.옵션 에서 워드 문서 로 docx 라 이브 러 리 를 저장 하 는 것 이 힘 들 었 습 니 다.그래서 저 는 HTML 코드 를 직접 구성 한 다음 에 Pdfkit 를 통 해 pdf 로 전환 하 는 것 을 생각 했 습 니 다.
(요청 할 때 는 반드시 완전한 headers 를 휴대 해 야 합 니 다.그렇지 않 으 면 데 이 터 를 얻 지 못 할 수도 있 습 니 다)
구체 적 인 조작 코드 분석

###                
def jiexi(liebiao):
 new = []
 timu_last = []
 for each in liebiao:
  new.append(re.sub(r'flag=\\"tex\\" ','',each))
 for each in new:
  timu_last.append(re.sub(r'\\','',each))
 return timu_last
###         
def xuanxiang(liebiao):
 xuanxiang_v2 = []
 xuanxiang_v3 = []
 for each in liebiao:
  a = re.sub('<p>','',each)
  a = re.sub('</p>','',a)
  xuanxiang_v2.append(a)
 for each in xuanxiang_v2:
  each = each+'</p>'
  xuanxiang_v3.append(each)
 return xuanxiang_v3
import requests
import re
import pdfkit
import os
url = str(input("        :"))
###      id
id_ = re.findall(r'https://www.fenbi.com/spa/tiku.*?/xingce/xingce/(.*?)/',url,re.S)[0]
mid_url = 'https://tiku.fenbi.com/api/xingce/exercises/'+str(id_)+'?app=web&kav=12&version=3.0.0.0'
headers = {
#####   headers,    
}
response = requests.get(url=mid_url,headers=headers)
response.encoding = 'utf-8'
page_text = response.text
###       
id_list = re.findall('\"questionIds\"\:\[(.*?)\]\,',page_text,re.S)
###       
your_answer = re.findall(r'"answer":{"choice":"(.*?)",',page_text,re.S)
###     
name = re.findall(r'"name":"(.*?)",',page_text,re.S)[0]
###        
timu_url = 'https://tiku.fenbi.com/api/xingce/questions'
params = {
 'ids': id_list
}
response = requests.get(url=timu_url,headers=headers,params=params)
response.encoding = 'utf-8'
page_text = response.text
###      
true_answer = re.findall('"correctAnswer":{"choice":"(.*?)"',page_text,re.S)
###        
solution_url = 'https://tiku.fenbi.com/api/xingce/solutions'
response = requests.get(url=solution_url,headers=headers,params=params)
response.encoding = 'utf-8'
page_text = response.text
###    
solution_list = re.findall(r'"solution":"(.*?)","userAnswer"',page_text,re.S)
solution_last = jiexi(solution_list)
cailiao = []
timu = []
###              
for each in response.json():
 timu.append(each['content'])
 try:
  cailiao.append(each['material']['content'])
 except:
  cailiao.append('none')
###      
A_option = re.findall('\"options\"\:\[\"(.*?)\"\,\".*?\"\,\".*?\"\,\".*?\"\]',page_text,re.S)
B_option = re.findall('\"options\"\:\[\".*?\"\,\"(.*?)\"\,\".*?\"\,\".*?\"\]',page_text,re.S)
C_option = re.findall('\"options\"\:\[\".*?\"\,\".*?\"\,\"(.*?)\"\,\".*?\"\]',page_text,re.S)
D_option = re.findall('\"options\"\:\[\".*?\"\,\".*?\"\,\".*?\"\,\"(.*?)\"\]',page_text,re.S)
A_option = xuanxiang(A_option)
B_option = xuanxiang(B_option)
C_option = xuanxiang(C_option)
D_option = xuanxiang(D_option)
A_option = jiexi(A_option)
B_option = jiexi(B_option)
C_option = jiexi(C_option)
D_option = jiexi(D_option)
###  HTML  
count = 0
all_content = "<!DOCTYPE html>
<meta charset='utf-8'>
<html>" for each in true_answer: if each != your_answer[count]: ### if cailiao[count] != 'none' and cailiao[count] not in all_content: all_content += cailiao[count] all_content += str(count+1) all_content += '、' all_content += timu[count][3:] all_content += 'A、' all_content += A_option[count] all_content += 'B、' all_content += B_option[count] all_content += 'C、' all_content += C_option[count] all_content += 'D、' all_content += D_option[count] all_content += '<br>' count += 1 count = 0 all_content += '<br><br><br><br><br><br><br><br><br>' for each in true_answer: if each != your_answer[count]: temp = ' '+str(count+1)+' ' all_content += temp if true_answer[count]=='0': all_content += 'A' elif true_answer[count]=='1': all_content += 'B' elif true_answer[count]=='2': all_content += 'C' elif true_answer[count]=='3': all_content += 'D' all_content += solution_last[count] all_content += '<br>' count += 1 all_content += '</html>' path_name = name + '.html' ### HTML with open(path_name,'w',encoding='utf-8') as fp: fp.write(all_content) confg = pdfkit.configuration(wkhtmltopdf=r'wkhtmltopdf.exe ') pdfkit.from_url(path_name, name+'.pdf',configuration=confg)### HTML pdf print(' PDF ') ### HTML os.remove(path_name)
웹 사이트
在这里插入图片描述
퀴즈 기록 에서 본인 이 했 던 문제 이기 도 하고 요.
화 투 사 이 트 는 조금 다 르 기 때문에 그의 데 이 터 는 직접 가방 을 잡 으 면 볼 수 있다.
在这里插入图片描述
이 패 키 지 를 요청 하면 데 이 터 를 얻 을 수 있 습 니 다.다음은 분 석 된 일 입 니 다.이번 에는 워드 문서 로 저장 하 겠 습 니 다.불편 하 다 면 위의 글 처럼 HTML 을 구성 할 수 있 습 니 다.

##  
import requests
import lxml.etree
import re
import time
import os
from docx import Document
from docx.shared import Inches
from docx.shared import Pt
from docx.shared import Inches
from docx.oxml.ns import qn
from docx.enum.text import WD_ALIGN_PARAGRAPH
url = str(input("        :"))
headers={
###   headers,        
}
response = requests.get(url = url,headers = headers)
response.encoding='utf-8'
reptext = response.text
tree = lxml.etree.HTML(reptext) #        

dirName="    "
if not os.path.exists(dirName):
 os.mkdir(dirName) #        
 
jiexi = re.findall(r'<div class="jiexi-item-title">  .*?。</div>.*?</div>', reptext,re.S) #      

imgg = []
for each in jiexi:
 imgg.append(re.findall(r'<img src="(.*?)".*?>', each)) #        URL
 
imgt = []
for each in imgg:
 if each == []:
  imgt.append([1])
 else:
  imgt.append(each) #      URL      
  
jiexilast = []
for qq in jiexi:
 jiexilast.append(re.sub(r'<[^>]+>', '', qq)) #      
 
corrected = re.findall(r'<span class="g-right-answer-color">[a-zA-Z]{1,4}</span>', reptext) #      
correct = []
for ee in corrected:
 correct.append(re.sub(r'<[^>]+>', '', ee)) #      
 
yoursed = re.findall(r'<span class="yellowWord">[a-zA-Z]{1,4}</span>', reptext) #       
yours = []
for ee in yoursed:
 yours.append(re.sub(r'<[^>]+>', '', ee)) #       
 
timuleixing = re.findall(r'<span class="greenWord">(.*?)</span>.*?</div>',reptext,re.S) #      

find1 = re.findall(r'<span class="greenWord">.*?</span>(.*?)</div>',reptext,re.S)
for each in find1:
 re.sub(r'<.*?>','',each)
find5 = [] #     
for each in find1:
 find5.append(re.sub(r'<[^>]+>', '', each))
 
img = []
for each in find1:
 img.append(re.findall(r'<img src="(.*?)".*?>', each))
imgx = []
for each in img:
 if each == []:
  imgx.append([1])
 else:
  imgx.append(each) #       URL
  

v = tree.xpath('//div[@class="exercise-main-title"]//text()') #      

try:
 ###             
 fuheti = re.findall(r'<!--   -->(.*?)<div class="exercise-main-topics"',reptext,re.S)[0].split('<!--   -->')
except:
 try:
  ###                  
  fuheti = re.findall(r'<!--   -->(.*?)<!--       -->',reptext,re.S)[0].split('<!--   -->')
 except:
  pass
count = 0

###    
document = Document()
p = document.add_paragraph()
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run(v[0][5:-3])
run.font.size = Pt(14)
run.font.name=u'  '
r = run._element
r.rPr.rFonts.set(qn('w:eastAsia'),u'  ')
choose = []

###      
axuanxiang = []
bxuanxiang = []
cxuanxiang = []
dxuanxiang = []
xuanxiang = re.findall(r'<div class="main-topic-choices">(.*?)<div class="main-topic-letters clearfix pl14">',reptext,re.S)
for everything in xuanxiang:
 try: ##        
  axuanxiang.append(re.sub("<.*?>","",re.findall(r'<div.*?class.*?main-topic-choice.*?>(A.*?)</div>',everything,re.S)[0]))
 except:
  axuanxiang.append('--')
 try:
  bxuanxiang.append(re.sub("<.*?>","",re.findall(r'<div.*?class.*?main-topic-choice.*?>(B.*?)</div>',everything,re.S)[0]))
 except:
  bxuanxiang.append('--')
 try:
  cxuanxiang.append(re.sub("<.*?>","",re.findall(r'<div.*?class.*?main-topic-choice.*?>(C.*?)</div>',everything,re.S)[0]))
 except:
  cxuanxiang.append('--')
 try:
  dxuanxiang.append(re.sub("<.*?>","",re.findall(r'<div.*?class.*?main-topic-choice.*?>(D.*?)</div>',everything,re.S)[0]))
 except:
  dxuanxiang.append('--')
  

 
for every in correct:
 if every != yours[count]:
  ###       
  try:
   for eacy in fuheti:
    if find5[count] in eacy:
     fuheti_URL = re.findall(r'<img src="(.*?)".*?>',re.findall(r'.*?<p>(.*?)</p>',eacy,re.S)[0],re.S)
     fuheti_last = re.sub(r'<.*?>','',re.findall(r'.*?<p>(.*?)</p>',eacy,re.S)[0])
     fuheti_last = re.sub(r'\xa0\xa0\xa0\xa0\xa0\xa0\xa0','
',fuheti_last) if fuheti_last not in choose: p = document.add_paragraph() run = p.add_run(fuheti_last) run.font.size = Pt(14) run.font.name=u' ' r = run._element r.rPr.rFonts.set(qn('w:eastAsia'),u' ') headers ={ 'Use-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36' } for eacu in fuheti_URL: img_data = requests.get(url = eacu,headers = headers).content img_path = dirName+'/'+'tupian'+'.jpg' with open(img_path,'wb') as fp: fp.write(img_data) print(" ") document.add_picture(img_path, width=Inches(5)) choose.append(fuheti_last) except: pass ### p = document.add_paragraph() run = p.add_run(str(count+1)+"、"+timuleixing[count]+find5[count][3:]) run.font.size = Pt(14) run.font.name=u' ' r = run._element r.rPr.rFonts.set(qn('w:eastAsia'),u' ') url = imgx[count][0] headers ={ 'Use-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36' } try: img_data = requests.get(url = url,headers = headers).content img_path = dirName+'/'+'tupian'+'.jpg' with open(img_path,'wb') as fp: fp.write(img_data) print(" ") document.add_picture(img_path, width=Inches(5)) count+=1 except: count+=1 ### p = document.add_paragraph() run = p.add_run(axuanxiang[count-1]) run.font.size = Pt(14) run.font.name=u' ' r = run._element r.rPr.rFonts.set(qn('w:eastAsia'),u' ') p = document.add_paragraph() run = p.add_run(bxuanxiang[count-1]) run.font.size = Pt(14) run.font.name=u' ' r = run._element r.rPr.rFonts.set(qn('w:eastAsia'),u' ') p = document.add_paragraph() run = p.add_run(cxuanxiang[count-1]) run.font.size = Pt(14) run.font.name=u' ' r = run._element r.rPr.rFonts.set(qn('w:eastAsia'),u' ') p = document.add_paragraph() run = p.add_run(dxuanxiang[count-1]) run.font.size = Pt(14) run.font.name=u' ' r = run._element r.rPr.rFonts.set(qn('w:eastAsia'),u' ') p = document.add_paragraph() run = p.add_run("
") run.font.size = Pt(14) run.font.name=u' ' r = run._element r.rPr.rFonts.set(qn('w:eastAsia'),u' ') else: count+=1 ### p = document.add_paragraph() run = p.add_run("




") run.font.size = Pt(14) run.font.name=u' ' r = run._element r.rPr.rFonts.set(qn('w:eastAsia'),u' ') ### counting = 0 jiexilast2 = [] for ok in jiexilast: jiexilast2.append(re.sub(r'
\t\t',':',ok)) for every in correct: if every != yours[counting]: ### p = document.add_paragraph() run = p.add_run(str(counting+1)+"、"+" :"+correct[counting]+"
"+jiexilast2[counting]) run.font.size = Pt(14) run.font.name=u' ' r = run._element r.rPr.rFonts.set(qn('w:eastAsia'),u' ') url = imgt[counting][0] headers ={ 'Use-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36' } try: img_data = requests.get(url = url,headers = headers).content img_path = dirName+'/'+'tupian'+'.jpg' with open(img_path,'wb') as fp: fp.write(img_data) print(" ") document.add_picture(img_path, width=Inches(5)) print(" ") counting+=1 except: counting+=1 else: counting+=1 ### document.save(v[0][5:-3]+'.docx') print(v[0][5:-3]+' !')
총결산
분필 과 화도 오류 파충류 의 주요 차이 점 은 화도 획득 데이터 가 간단 하고 해석 조작 이 번거롭다 는 것 이다.분필 의 데 이 터 는 은밀 하여 해석 하기에 json 을 사용 할 수 있어 비교적 편리 하 다.
파 이 썬 파충류 의 자동화 획득 화투 와 분필 사이트 의 오류 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 파충류 획득 사이트 의 오류 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기