2016-08-29 4 views
1

Ich habe versucht, den Titel der Websites zu bekommen. Also, habe ich diese Schnipsel dieses Dies funktioniert perfektnicht scrape Text

sys.stdout = open("test_data.txt", "w") 
    url2 = "https://www.google.com/" 
    headers = { 
     'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A'} 
    req = urllib2.Request(url2, None, headers) 
    req.add_header('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8') 
    html = urllib2.urlopen(req, timeout=60).read() 
    soup = BeautifulSoup(html) 
    # Extract title 
    list1 = soup.title.string 
    print list1.encode('utf-8') 

zu tun und gibt Google als Titel und spült die Ausgabe an test_data.txt.

Aber wenn ich versuche, den gleichen Code wie ein Web-Service auszuführen, funktioniert es nicht. Ich bekomme eine leere Textdatei. Ich schlage diese URL diesen Web-Dienst auf dem lokalen http://0.0.0.0:8881/get_title

from bottle import route, run, request 

@route('/get_title') 
def get_title(): 
    sys.stdout = open("test_data.txt", "w") 
    url2 = "https://www.google.com/" 
    headers = { 
     'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A'} 
    req = urllib2.Request(url2, None, headers) 
    req.add_header('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8') 
    html = urllib2.urlopen(req, timeout=60).read() 
    soup = BeautifulSoup(html) 
    # Extract title 
    list1 = soup.title.string 
    print list1.encode('utf-8') 

if __name__ == "__main__": 
    run(host='0.0.0.0', port=8881, debug=True) 

Eine andere Sache zu laufen, die mich noch mehr Angst gemacht hat, wenn ich den Web-Service für msn.com laufen, es funktioniert gut für beiden Schnipsel (sogar der Webservice).

Jede Hilfe wäre dankbar !!

Antwort

-2

Ist dieser Kolben? Wenn dies der Fall ist, müssen Sie die Zeichenfolge return an den Benutzer senden. Eine print Anweisung schreibt in das Webserverprotokoll. Sie sollten die letzte Zeile Ihrer get_title Funktion damit ersetzen:

+0

aber warum funktioniert es dann für andere URLs wie msn.com? – x0v