안녕 얘들 아!파이썬 - 뒤틀린 : 형태의 POST
나는 아직도 Twisted를 발견하고 있으며이 스크립트를 HTML 테이블의 내용을 구문 분석하여 Excel로 작성했습니다. 이 스크립트는 잘 작동합니다! 내 질문에 하나의 웹 페이지 (http://bandscore.ielts.org/)에 대해서도 동일한 작업을 수행 할 수 있지만 모든 결과를 가져올 수있는 POST 요청이 많으면 beautifulSoup로 구문 분석 한 다음 넣을 수 있습니다. 엑셀로?
소스를 구문 분석하고 엑셀로 퍼팅하는 트위스트와 내가 구문 분석에 사용하는 스크립트입니다 (OK,하지만 난
이에 그것을 구현하기 위해 트위스트와 POST 요청을 수행하는 방법을 모른다) 다른 페이지 (나도 같은 스크립트를 작성할 수 있도록하려면,하지만 같은 페이지에 다른 POST 데이터를 많이하지 많은 페이지)으로의 많은 :
from twisted.web import client
from twisted.internet import reactor, defer
from bs4 import BeautifulSoup as BeautifulSoup
import time
import xlwt
start = time.time()
wb = xlwt.Workbook(encoding='utf-8')
ws = wb.add_sheet("BULATS_IA_PARSED")
global x
x = 0
Countries_List = ['Afghanistan','Armenia','Brazil','Argentina','Armenia','Australia','Austria','Azerbaijan','Bahrain','Bangladesh','Belgium','Belize','Bolivia','Bosnia and Herzegovina','Brazil','Brunei Darussalam','Bulgaria','Cameroon','Canada','Central African Republic','Chile','China','Colombia','Costa Rica','Croatia','Cuba','Cyprus','Czech Republic','Denmark','Dominican Republic','Ecuador','Egypt','Eritrea','Estonia','Ethiopia','Faroe Islands','Fiji','Finland','France','French Polynesia','Georgia','Germany','Gibraltar','Greece','Grenada','Hong Kong','Hungary','Iceland','India','Indonesia','Iran','Iraq','Ireland','Israel','Italy','Jamaica','Japan','Jordan','Kazakhstan','Kenya','Kuwait','Latvia','Lebanon','Libya','Liechtenstein','Lithuania','Luxembourg','Macau','Macedonia','Malaysia','Maldives','Malta','Mexico','Monaco','Montenegro','Morocco','Mozambique','Myanmar (Burma)','Nepal','Netherlands','New Caledonia','New Zealand','Nigeria','Norway','Oman','Pakistan','Palestine','Papua New Guinea','Paraguay','Peru','Philippines','Poland','Portugal','Qatar','Romania','Russia','Saudi Arabia','Serbia','Singapore','Slovakia','Slovenia','South Africa','South Korea','Spain','Sri Lanka','Sweden','Switzerland','Syria','Taiwan','Thailand','Trinadad and Tobago','Tunisia','Turkey','Ukraine','United Arab Emirates','United Kingdom','United States','Uruguay','Uzbekistan','Venezuela','Vietnam']
urls = ["http://www.cambridgeesol.org/institutions/results.php?region=%s&type=&BULATS=on" % Countries for Countries in Countries_List]
def finish(results):
global x
for result in results:
print 'GOT PAGE', len(result), 'bytes'
soup = BeautifulSoup(result)
tableau = soup.findAll('table')
try:
rows = tableau[3].findAll('tr')
print("Fetching")
for tr in rows:
cols = tr.findAll('td')
y = 0
x = x + 1
for td in cols:
texte_bu = td.text
texte_bu = texte_bu.encode('utf-8')
#print("Writing...")
#print texte_bu
ws.write(x,y,td.text)
y = y + 1
except(IndexError):
print("No IA for this country")
pass
reactor.stop()
waiting = [client.getPage(url) for url in urls]
defer.gatherResults(waiting).addCallback(finish)
reactor.run()
wb.save("IALOL.xls")
print "Elapsed Time: %s" % (time.time() - start)
당신에게 대단히 감사합니다 미리 도움을 청하십시오!
합니다. 안녕 진 - 폴 칼데론, 답변을 많이 주셔서 대단히 감사합니다! 많이 도움이 되겠습니다! 당신에게 조금 문제가 있습니다 :) : 여기에 구현 된 솔루션 : http://pastebin.com/Xk9GSmvR이 오류가 발생합니다 : http : /pastebin.com/1b7ahvx6 내가 마지막으로 왜 그 이유를 알아낼 수 있다면 ... nna는 내 주인이 될 것입니다.) –
편집 : 아마도 "실패 : exceptions.TypeError : 시퀀스 항목 6 : 예상 문자열, dict이 발견되었습니다" "postdata"때문에 문자열 대신 이상한 것을 넣을 수 있습니까? –
아마도. 'postdata'의 값은'str' 타입이어야합니다. –