2017-02-22 18 views
0

1日目のPythonによるコーディング。そしてスープと一緒に。そして一般的に。本から :ウェブのPythonでスクレイピング:http://dl.finebook.ir/book/6f/13125.pdfPython構文エラー(スープ付き)

これはコードです:

from urllib.request import urlopen 
from urllib.error import HTTPError 
from bs4 import BeautifulSoup 
def getTitle(url): 
    try: 
     html = urlopen(url) 
    except HTTPError as e: 
     return None 
    try: 
     bsObj = BeautifulSoup(html.read()) 
     title = bsObj.body.h1 
    except AttributeError as e: 
     return None 
    return title 
title = getTitle("http://www.pythonscraping.com/pages/page1.html") 
if title == None: 
    print("Title could not be found") 
else: 
    print(title) 

これはエラーです:

File "<stdin>", line 12 title = getTitle("http://www.pythonscraping.com/pages/page1.html") Syntaxerror: invalid syntax 

リトルハット(^)で 'E' の下で最初のタイトル。

Python 3.4を使用すると、スープ4.

ありがとうございました。

+1

エラーメッセージが掲載ソースコードには一切対応しません。 12行目はgetTitle()呼び出しを含む行ではありません。あなたが実際に実行しているコードをダブルチェックしますか? –

+0

そのコードは私にとって構文エラーを生成しません。 – TigerhawkT3

+1

これはコマンドラインインタプリタから実行していますか? –

答えて

0

このコードは、Pythonのコマンドラインインタプリタで実行しようとするとエラーが発生します。コードがPython言語仕様で構文的に正しいとはいえ、コマンドラインインタプリタはそのコードにエラーを表示します。

getTitle関数定義の最後と12行目以降の呼び出しの間に空白を追加すると、問題が解決するはずです。 Pythonで関数定義について

詳しい情報は、この記事で見つけることができます:Python def function: How do you specify the end of the function?

+0

いいえ、そうする必要はありません。このアイデアはどこで手に入りましたか? – TigerhawkT3

+0

コマンドラインインタープリタを使用している場合、正規の構文であっても、構文エラーが発生します。 –

+1

これは正しいです。それを試してみてください。コマンドラインインタプリタでインデントされたブロックを終了するには、Pythonに空白行が必要です。 – kindall

関連する問題