2017-10-17 1 views
0

URLを使用してWebページをスクラップしようとしたときに、一部の要素が一部のページにのみ存在し、のは、例えばPython:すべてのWebページに特定の要素があるわけではありません

コードをコードを見てみましょう:

for urls in article_url_set: 
    re=requests.get(urls) 
    soup=BeautifulSoup(re.text.encode('utf-8'), "html.parser") 
    title_tag = soup.select_one('.page_article_title') 
    if title_tag=True: 
     print(title_tag.text) 
    else: 
     #do something 

がtitle_tagが終了した場合、私はそれがない場合は、それらを印刷したい、ちょうどそれらをスキップします。

もう1つのことは、他の要素とtitle.tag.textをデータに保存する必要があることです。

data={ 
     "Title":title_tag.text, 
     "Registration":fruit_tag.text, 
     "Keywords":list2 
    } 

それは私が私が保存しようとすると、それらをスキップするために何をすべき、すべての記事がタイトルを持っていない、エラーの原因があるのだろうか? 'NoneType'オブジェクトに 'text'属性がありません

編集:私はそれらをスキップしてNullまたはNoneとして保持します。

答えて

1

Uコードが間違っている:

真のコードtitle_tag ==を変更

for urls in article_url_set: 
    re=requests.get(urls) 
    soup=BeautifulSoup(re.text.encode('utf-8'), "html.parser") 
    title_tag = soup.select_one('.page_article_title') 
    if title_tag=True: # wrong 
     print(title_tag.text) 
    else: 
     #do something 

あなたのコード、title_tag = Trueの場合、次のように条件文を作成することをお勧めします。

title_tag == True =>True == title_tag

これは間違いを犯したときにエラーを作るための方法です。

コードがTrue = title_tagの場合、エラーが発生します。

1

あなたは、単にそれ以外の場合は、あなたがデータコンテナに挿入することができ、Noneのように値を代入すると、タグが存在しているかどうかを確認するために真実のテストを使用することができます。

title_tag = soup.select_one('.page_article_title') 
if title_tag: 
    print(title_tag.text) 
    title = title_tag.text 
else: 
    title = None 

または1行で:

title = title_tag.text if title_tag else None 
+0

ありがとう!私は実際に昨日ソートしました。あなたのすべての助けに本当に感謝します! – Makiyo

関連する問題