2017-10-17 163 views
0

當我試圖使用網址來抓取網頁時,我發現一些元素只存在於某些頁面中,而其他元素沒有。讓我們的代碼,例如Python:並非每個網頁都有一定的元素

代碼:

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退出,我想打印出來,如果不是的話,就跳過他們。

另一件事是,我需要在數據中保存其他元素和title.tag.text。

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

這將有一個錯誤的原因不是所有的文章標題有,我應該怎麼辦跳過他們,當我嘗試保存? 'NoneType'對象沒有屬性'text'

編輯:我決定不跳過它們並將它們保留爲空或無。

回答

1

ü代碼是錯誤的:如果

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 =真,

改變代碼title_tag ==真

建議創造條件語句如下。

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 

或者在同一行:

title = title_tag.text if title_tag else None 
+0

哦,謝謝你!我昨天實際上已經整理出來了。真的很感謝你的幫助! – Makiyo

相關問題