首页 > 解决方案 > Webscraping:如何检查属性是否存在以及它是否在没有结束程序的情况下继续

问题描述

我正在尝试抓取网站以获取所需的联系信息,例如手机、电子邮件、地址等...

有些页面将包含所有信息......而有些页面可能只有手机和电子邮件,但没有地址......以及中间有/没有这些字段的任何组合......

我一直在玩一些代码,但无法弄清楚

我如何检查我想要的信息是否存在于页面上(因为它不会总是一致的),如果它不是简单地忽略并刮掉所有“可用”信息,然后继续而不破坏程序

我正在尝试的代码:

if driver.find_elements_by_class_name('zsg-list_definition'):
                trial = soup.findAll('dl', {'class': 'zsg-list_definition'})
                if len(trial[0].dd.text) > 0:
                    address = trial[0].dd.text
                else:
                    address = 'None'

            if driver.find_elements_by_class_name('dont-break-out') == True:
                websiteURL = soup.find('dd', {'class': 'dont-break-out'})
                website = websiteURL.a.text
            else:
                    website = 'None'

            csv_writer.writerow([address, website])

此致

标签: pythonseleniumweb-scrapingbeautifulsoup

解决方案


可以只使用try except

...

try:
    address = trial[0].dd.text
except:
    address = 'None'

try:
    websiteURL = soup.find('dd', {'class': 'dont-break-out'})
    website = websiteURL.a.text
except:
    website = 'None'

...

推荐阅读