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