2017-08-04 3 views
0

J'ai un code Python qui renvoie le titre et le premier paragraphe d'un reportage BBC, mais actuellement je dois fournir le lien. Voici le code:Python - grattant un titre à partir d'une URL, mais l'URL provient de l'entrée de l'utilisateur

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)) 

Mais ce code repose sur moi face l'URL dans le bit requests.get ('').

Voilà ma tentative de changer pour permettre l'entrée d'utilisateur:

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)) 

Mais malheureusement, qui a renvoyé l'erreur suivante:

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 

Je me demandais si quelqu'un connaissait la meilleure façon de obtenir ce code à travailler en prenant une entrée, plutôt que de compter sur l'utilisateur en changeant le code pour obtenir les informations de l'URL.

Merci

+0

Vous voulez 'raw_input' sauf si vous utilisez python3. – jordanm

+0

Aussi, je dirais que vous voulez quelque chose du genre: 'response = requests.get (input())' – tmarice

+0

Salut @jordanm, j'utilise Python 3.5 merci –

Répondre

0

Voici ce que vous recherchez:

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)) 

Pour mettre les résultats dans un fichier txt, utilisez les touches suivantes:

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

Merci Anoop - de jouer avec , J'ai atterri avec presque exactement ce que tu avais aussi - je n'avais pas pensé à mettre la corde avant donc je suis reconnaissant. Je vous ai upvoted, mais parce que mon représentant est inférieur à 15, apparemment ce n'est pas compté! –

+0

Sure Man !! Content que ça a marché! –

+0

Maintenant, pour comprendre comment imprimer le résultat dans un fichier txt ... –

0

Je ne sais pas si C'est une pratique courante de «répondre à votre propre question», mais je l'ai compris. Je raw_input à la place, et remplacé mon entrée() mais avec:

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

Je ne sais pas si quelqu'un d'autre verra, mais espérons que cela a aidé!

+0

Il est bon de répondre à vos propres questions ici. Vous pouvez même le marquer comme accepté. – RedX