2017-04-18 3 views
0

나는 Beautiful Soup for Python을 배우고 웹 사이트 "https://www.twitteraudit.com/"을 구문 분석하려고합니다. 검색 창에 트위터 ID를 입력하면 일부 ID의 결과가 초 단위로 반환되지만 일부 ID는 데이터를 처리하는 데 약 1 분이 걸립니다. 이 경우 HTML이로드되거나 결과가 완료된 후 어떻게 구문 분석 할 수 있습니까? 그리고 루프를 만들려고했으나 그렇게 작동하지 않습니다. 하지만 내가 브라우저를 열고 웹 링크를로드하면 컴퓨터에 캐시를 저장하고 다음 번에 동일한 ID로 실행하면 완벽하게 작동한다는 것을 알았습니다.Python Beautiful Soup

누구든지 나를 도와 줄 수 있습니까? 도움에 감사드립니다. 나는 문제가 트위터 아이디의 일부가 아직 감사되지 않은 것입니다, 그래서 내가 IndexError을지고 있다고 생각 아래 코드 >>

from bs4 import BeautifulSoup as soup 
from urllib.request import urlopen as uReq 
import re 
from re import sub 

def HTML(myURL): 
    uClient = uReq(myURL) 
    pageHTML = uClient.read() 
    uClient.close() 

    pageSoup = soup(pageHTML, "html.parser") 
    return pageSoup 

def fakecheck(usr): 
    myURLfc = "https://www.twitteraudit.com/" + usr 
    pgSoup = HTML(myURLfc) 

    foll = pgSoup.findAll("div",{"class":"audit"}) 


    link = foll[0].div.a["href"] 
    real = foll[0].findAll("span",{"class":"real number"})[0]["data-value"] 
    fake = foll[0].findAll("span",{"class":"fake number"})[0]["data-value"] 
    scr = foll[0].findAll("div",{"class":"score"})[0].div 
    scoresent = scr["class"][1] 
    score = re.findall(r'\d{1,3}',str(scr))[0] 
    return [link, real, fake, scoresent, score] 


lis = ["BarackObama","POTUS44","ObamaWhiteHouse","MichelleObama","ObamaFoundation","NSC44","ObamaNews","WhiteHouseCEQ44","IsThatBarrak","obama_barrak","theprezident","barrakubama","BarrakObama","banackkobama","YusssufferObama","barrakisdabomb_","BarrakObmma","fuzzyjellymasta","BarrakObama6","bannalover101","therealbarrak","ObamaBarrak666","barrak_obama"] 

for u in lis: 
    link, real, fake, scoresent, score = fakecheck(u) 

    print ("link : " + link) 
    print ("Real : " + real) 
    print ("Fake : " + fake) 
    print ("Result : " + scoresent) 
    print ("Score : " + score) 
    print ("=================") 
+0

일부 데이터가 수신되지 않습니까? 귀하의 코드를 실행하고 23 개의 쿼리 모두에 대한 결과를 얻었으므로 제대로 작동하는 것 같습니다. – davedwards

+0

답장을 보내 주셔서 감사합니다 ... 상황을 이해할 수있는 값으로 lis 값을 변경하십시오. lis = [ "TomCruise", "TomCruiseFanCom", "TomCruiseBRCom", "TheAmyNicholson", "TomCruiseIndo" MissionFilm ","JackReacher ","Not_TomCruise ","Pompey_Dave ","tomcruiseblog ","cubanalaf ","JustinMeliNY ","rivergyllenhaal ","eddiehamilton ","TomCruiseActor "] –

+0

네가 맞다면 스크립트 웹 사이트에서 결과가 없다고보고하면 종료됩니다. 'for '루프를'while True :'-loop에두면 결과가없는'ID'에서 멈추고 동시에 페이지에서 감사를 요청합니다 그 ID에 대해서, 그리고 결과가 나오면, 스크립트는 계속됩니다. 그걸 고쳐 줄까요? – davedwards

답변

0

를 연결합니다. 그러나 해당 오류를 잡는 while True: 루프의 fakecheck(u)에 전화를 걸면 해당 ID에 대한 감사가 수행 될 때까지 웹 사이트를 계속 확인합니다.

은 내가 lis 정의 후이 코드를 넣어 :

def get_fake_check(n): 
    return fakecheck(n) 

for u in lis: 
    while True: 
     try: 
      link, real, fake, scoresent, score = get_fake_check(u) 
      break 
     except: 
      pass 

나는 웹 사이트의 감사 요청을 자동화하는 방법이 있는지 모르겠지만, 쿼리가 대기 할 때, 나는 수동을 클릭 해당 ID에 대해 웹 사이트에서 "Audit"버튼을 클릭하고 일단 감사가 완료되면 모든 ID 감사가 처리 될 때까지 스크립트가 계속됩니다.

관련 문제