2017-10-17 162 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

相关问题