2017-08-04 4 views
0

BBCのニュース記事の見出しと最初の段落を返すPythonコードがありますが、現在はリンクを提供する必要があります。コードは次のとおりです:Python - URLから見出しをスクラップしますが、URLはユーザー入力に由来します

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

しかし、このコードは、私がrequest.get( '')ビットにURLをコピーすることに依存しています。

ここでは、ユーザの入力を可能にするためにそれを変更することで、私の試みです:

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

しかし残念ながら、次のエラー戻ってきたこと:誰がための最善の方法を知っていれば

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 

を私は思っていましたURLから情報を取得するためにコードを変更するユーザーに頼るのではなく、入力を取ることによってこのコードが機能するようにします。ここで

おかげ

+0

python3を使用していない限り、 'raw_input'が必要です。 – jordanm

+0

また、私はあなたが何かの行に沿ってしたいと思います: '応答= requests.get(入力)' – tmarice

+0

こんにちは@ヨルダン、私はPython 3.5を使用してありがとう –

答えて

0

は、あなたが探しているものです。

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

次を使用し、.txtファイルに結果を配置するには:

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

ありがとう私はあなたが持っていたことをほぼ正確に着陸しました - 私は文字列を前に置くことを考えなかったので、私は感謝しています。私はあなたをアップアップしましたが、私の担当者が15歳未満であることは明らかに数えられていません! –

+0

確かに男!それはうまくいってうれしい! –

+0

結果をtxtファイルに出力する方法を理解する... –

0

私はかどうかを知りません「自分の質問に答える」のが一般的ですが、私はそれをうまく処理しました。私の代わりにraw_input使用し、と私の入力()が、置き換え:

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

しかし、誰がこれを見ますかどうかわからない、それが助けたことを願っています!

+0

ここであなた自身の質問をお答えします。あなたはそれを受け入れられたものとしてマークすることさえできます。 – RedX

関連する問題