Я работаю над веб-шабером, который создает файл .csv со всеми химикатами на веб-сайте Sigma-Aldrich.Файл .csv будет иметь химическое название, за которым следуют такие переменные, как номер продукта, номер cas, молекулярный вес и химическая формула.1 химикат + информация в строке.
Проблема, с которой я столкнулся, заключается в том, что не у всех химикатов есть все поля, у многих есть только номера продуктов и касс.Это приводит к смещению моего файла .csv, а строки химикатов имеют неверную информацию, связанную с другим химическим веществом.
Чтобы исправить это неправильно, я хочу добавить 'N / A', если поле пустое.
Вот мой метод очистки:
def scraap(urlLi):
for url in urlLi:
content = requests.get(url).content
soup = BeautifulSoup(content, 'lxml')
containers = soup.find_all('div', {'class': 'productContainer-inner'})
for c in containers:
sub = c.find_all('div', {'class': 'productContainer-inner-content'})
names = c.find_all('div', {'class': 'searchResultSubstanceBlock clearfix'})
for n in names:
hope = n.find("h2").text
print(hope)
nombres.append(hope.encode('utf-8'))
for s in sub:
info = s.find_all('ul', {'class': 'nonSynonymProperties'})
proNum = s.find_all('div', {'class': 'product-listing-outer'})
for p in proNum:
ping = p.find_all('div', {'class': 'row clearfix'})
for po in ping:
pro = p.find_all('li', {'class': 'productNumberValue'})
pnPp = []
for pri in pro:
potus = pri.get_text()
pnPp.append(potus.encode('utf-8'))
ProductNumber.append(pnPp)
print(pnPp)
for i in info:
c = 1
for gling in i:
print(gling.get_text())
if c == 1:
formu.append(gling.get_text().encode('utf-8'))
elif c == 2:
molWei.append(gling.get_text().encode('utf-8'))
else:
casNum.append(gling.get_text().encode('utf-8'))
c += 1
c == 1
print("---")
Вот мой метод написания:
def pipeUp():
with open('sigma_pipe_out.csv', mode='wb') as csv_file:
fieldnames = ['chem_name', 'productNum', 'formula', 'molWei', 'casNum']
writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
# writer.writeheader()
# csv_file.write(' '.join(fieldnames))
for n, p, f, w, c in zip(nombres, ProductNumber, formu, molWei, casNum):
# writer.writerow([n, p, f, w, c])
writer.writerow({'chem_name': n, 'productNum': p, 'formula': f, 'molWei': w, 'casNum': c})
Проблема возникает в разделе get i from info :.Список formu, molWei и casNum отключен.
Как добавить «N / a», если в formu и molWei отсутствует информация?