2017-08-04 1 views
0

Ich habe einen Python-Code, der die Überschrift und den ersten Absatz einer BBC-Nachricht zurückgibt, aber derzeit muss ich den Link liefern. Hier ist der Code:Python - Scrapping eine Überschrift von einer URL, aber die URL stammt von Benutzereingabe

from lxml import html 
import requests 

response = requests.get('http://www.bbc.co.uk/news/business-40660355') 

if (response.status_code == 200): 

    pagehtml = html.fromstring(response.text) 

    news1 = pagehtml.xpath('//h1[@class="story-body__h1"]/text()') 
    news2 = pagehtml.xpath('//p[@class="story-body__introduction"]/text()') 
print("\n".join(news1) + " (BBC News)") 
print("\n".join(news2)) 

Aber dieser Code stützt sich auf mich die URL in das requests.get Coping ('') Bit.

Hier ist mein Versuch, es auf eine Änderung für die Benutzereingabe zu ermöglichen:

from lxml import html 
import requests 

response = input() 

if (response.status_code == 200): 

    pagehtml = html.fromstring(response.text) 

    news1 = pagehtml.xpath('//h1[@class="story-body__h1"]/text()') 
    news2 = pagehtml.xpath('//p[@class="story-body__introduction"]/text()') 
print("\n".join(news1) + " (BBC News)") 
print("\n".join(news2)) 

Aber leider, dass der folgende Fehler zurückgegeben hat:

http://www.bbc.co.uk/news/world-europe-40825668 
Traceback (most recent call last): 
    File "myscript2.py", line 5, in <module> 
    response = input() 
    File "<string>", line 1 
    http://www.bbc.co.uk/news/world-europe-40825668 
     ^
SyntaxError: invalid syntax 

Ich habe mich gefragt, ob jemand, der beste Weg wusste zu Lassen Sie diesen Code arbeiten, indem Sie eine Eingabe vornehmen, anstatt sich darauf zu verlassen, dass der Benutzer den Code ändert, um die Informationen aus der URL zu erhalten.

Dank

+0

Sie wollen 'raw_input', es sei denn, Sie verwenden python3. – jordanm

+0

Auch würde ich sagen, Sie wollen etwas in der Form von: 'response = requests.get (input())' – tmarice

+0

Hallo @jordanm, ich benutze Python 3.5 danke –

Antwort

0

Hier ist, was Sie suchen:

from lxml import html 
import requests 

url = raw_input('Enter a URL: ') 
response = requests.get(url) 

if (response.status_code == 200): 
    pagehtml = html.fromstring(response.text) 

    news1 = pagehtml.xpath('//h1[@class="story-body__h1"]/text()') 
    news2 = pagehtml.xpath('//p[@class="story-body__introduction"]/text()') 
print("\n".join(news1) + " (BBC News)") 
print("\n".join(news2)) 

Um die Ergebnisse in eine .txt-Datei zu setzen, verwenden Sie die folgenden Schritte aus:

with open('fileName.txt', 'a') as output: 
    output.write(news1 + '\n') 
+0

Vielen Dank Anoop - im Spiel mit darüber , Ich landete mit fast genau dem, was du auch hattest - ich hatte nicht daran gedacht, die Saite vor dir zu legen, also bin ich dankbar. Ich habe dich aufgestuft, aber weil mein Ruf weniger als 15 ist, wird es offensichtlich nicht gezählt! –

+0

Sicher Mann !! Schön, dass es geklappt hat! –

+0

Jetzt herauszufinden, wie Sie das Ergebnis in eine TXT-Datei drucken ... –

0

Ich weiß nicht, ob Es ist üblich, "deine eigene Frage zu beantworten", aber ich habe es ausgearbeitet. Ich benutzen raw_input statt und ersetzt meine Eingabe(), aber mit:

my_url = raw_input() 
response = requests.get(my_url) 

Nicht sicher, ob jemand dies sehen wird, aber die Hoffnung, dass es geholfen!

+0

Es ist in Ordnung, Ihre eigenen Fragen hier zu beantworten. Sie können es sogar als akzeptiert markieren. – RedX