2017-04-21 7 views
0

Mein Python-Skript, mit BeautifulSoup, kann nicht scheinen, die Wörter aus den divs auf der Seite zu erfassen, gibt es einen bestimmten Grund dafür? Ich kann die Profilbilder greifen, um die Anzahl der Nachrichten zu zählen, aber nicht den Text selbst.Scraping Probleme auf whoscall.in mit BeautifulSoup 4

(Als Referenz habe ich diese Seite verwendet: http://whoscall.in/1/2392247496/)

if(website == "1"): 
    reqInput = "http://whoscall.in/1/%s/" % (teleWho) 
    urlfile = urllib2.Request(reqInput) 
    print (reqInput) 
    time.sleep(1) 
    requestRec = requests.get(reqInput) 
    soup = BeautifulSoup(requestRec.content, "lxml") 
    noMatch = soup.find(text=re.compile(r"no reports yet on the phone number")) 
    print(requestRec.content)# #only if needed# 
    type(noMatch) is str 
    if noMatch is None: 
    worksheet.write(idx+1, 2, "Got a hit") 
    howMany = soup.find_all('img',{'src':'/default-avatar.gif'}) 
    howManyAreThere = len(howMany) 
    worksheet.write(idx+1,1,howManyAreThere) 
    print (howManyAreThere) 
    scamNum = soup.find_all(text=("scam"),recursive=True) 
    #,'scam','Scammer','scammer'# 
    scamCount = len(scamNum) 
    print(scamNum) 
    searchTerms = {scamCount:scamCount} 
    sentiment = max(searchTerms, key=searchTerms.get) 
    worksheet.write(idx+1,3,sentiment) 

ich den Text „Betrug“ nicht aus der Seite

Ich bin mir nicht sicher, warum es sich weigert, scheinen zu ziehen um diesen Text zu finden, wie der andere Beautiful Soup Code perfekt funktioniert.

https://github.com/GarnetSunset/Haircuttery/

Antwort

1

Ändern Sie diese Zeile:

scamNum = soup.find_all(text=("scam"),recursive=True) 

zu:

scamNum = [ div.text for div in soup.find_all('div', {'style':'font-size:14px; margin:10px; overflow:hidden'}) if 'scam' in div.text.lower() ] 

Versuchen Sie, diese für mehrere Wörter:

words = [ 'word1', 'word2', ... ] 
scamNum = [ div.text for div in soup.find_all('div', {'style':'font-size:14px; margin:10px; overflow:hidden'}) if any(word for word in words if word in div.text.lower()) ] 
+0

Total gearbeitet. Du bist der beste. :) – GarnetSunset

+0

Danke, froh, ich könnte helfen –

+0

Letzte Sache, dachte, du würdest das mögen. https://github.com/GarnetSunset/Haircuttery/commit/93a12ab60eea9df36339a1378966f8f9fd0ecc78 – GarnetSunset