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 을 사용 할 수 있어 비교적 편리 하 다.
파 이 썬 파충류 의 자동화 획득 화투 와 분필 사이트 의 오류 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 파충류 획득 사이트 의 오류 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.