Python 如果当前元素的attr不’;不存在

Python 如果当前元素的attr不’;不存在,python,python-3.x,beautifulsoup,web-crawler,Python,Python 3.x,Beautifulsoup,Web Crawler,第一次问,所以请原谅我,如果这是一个愚蠢的问题,但我已经花了好几天在这个问题上,我卡住了。我从一个列出公司的网站上抓取信息,对于一些(但不是全部)公司,它还包括其他属性(即其所在地区)。但是,如果公司没有属性(即区域),它会打印上一个属性的值。csv文件的最终外观如下所示: 公司1;描述1,区域1(具有此属性) 公司2;description2,区域1(没有属性,因此从上一行获取) 公司3;description3,区域1(没有属性,因此从上一行获取) 公司4;描述4,区域4(属性再次出现,打印

第一次问,所以请原谅我,如果这是一个愚蠢的问题,但我已经花了好几天在这个问题上,我卡住了。我从一个列出公司的网站上抓取信息,对于一些(但不是全部)公司,它还包括其他属性(即其所在地区)。但是,如果公司没有属性(即区域),它会打印上一个属性的值。csv文件的最终外观如下所示:

  • 公司1;描述1,区域1(具有此属性)
  • 公司2;description2,区域1(没有属性,因此从上一行获取)
  • 公司3;description3,区域1(没有属性,因此从上一行获取)
  • 公司4;描述4,区域4(属性再次出现,打印正确的值)
  • 我的代码如下,任何帮助都将不胜感激。我曾尝试使用if/else和try/except打印“未找到”或传递缺少的属性,但无法使其工作

    import requests
    from bs4 import BeautifulSoup
    
    
    page = 0
    while page <= max_pages:
        url = 'https://websitename' + str(page) + '.html'
        source_code = requests.get(url)
        plain_text = source_code.text
        soup = BeautifulSoup(plain_text)
        page += 1
        with open('sample.csv', 'a') as file:
            for comp_desc in soup.findAll(attrs={'items'}):
                for head in comp_desc.find_all(attrs={'head'}):
                    print(head.text)
                for info in comp_desc.find_all(attrs={'info'}):
                    print(info.text)
                for region in comp_desc.find_all(attrs={'region'}):
                    print(region.text)
                file.write(head.text + ';' + info.text + ';' + region.text + "\n")
        file.close()
    
    要写入信息,我将其更改为:

    file.write(str(region) + ';' + head.text + ';' + info.text + '\n')
    

    尝试执行region.string或region.text,但我得到了AttributeError:“NoneType”对象在中的区域中没有属性“string”

    region
    如果
    find\u all
    没有找到任何内容,则可能不会被覆盖。不要循环,应该显式地为
    region
    分配一些内容。例如:
    region\u list=comp\u desc.find\u all(attr={'region'});如果不是区域\列表:区域=无
    ,然后只有
    区域不是无
    时才写入
    区域
    。或者类似的,谢谢你的快速回复!“我刚刚开始学习Python,现在我真的不明白如何把你说的话写进代码中。”dwanderson。谢谢我运行了它,但这并没有解决问题。请提供示例HTML代码和所需的输出。谢谢
    file.write(str(region) + ';' + head.text + ';' + info.text + '\n')