Итак, у меня есть две следующие находки BeautifulSoup и веб-страница, на которой я работаю:
r = requests.get("https://www.viperprint.pl/produkt/arkusze-plano/AP01")
soup = BeautifulSoup(r.content)
elems = soup.find_all('a', {'class': 'tabela_cenowa eprint_product_link add_to_cart_link'})
hehes = soup.find_all('a', {'id': 'dLabel'})
Из этого мне нужно получить двойной цикл for, который печатает списки в отдельные столбцы в файле .csv
Вот моя проблема:
>>> for elem, hehe in zip(elems, hehes):
... nazwa = hehe.get('title')
... qty = elem.attrs.get('data-qty')
... print(nazwa, qty)
Дает мне вывод ниже.Это неправильно, потому что каждый элемент, который находится в столбце 1 (т. Е. «Arkusze PLANO» и все ниже), должен быть рядом друг с другом, и только первая цифра в столбце 2 («100») также должна быть в одной строке,
Неверный вывод:
('Arkusze PLANO', '100')
('A1+ (880 x 630 mm)', '250')
('Dwustronnie kolorowe (4+4 CMYK)', '500')
(u'Kreda b\u0142ysk 130g', '1000')
('Bez uszlachetniania (0+0)', '1500')
(None, '2000')
Ожидаемый вывод:
'Arkusze PLANO';'A1+ 880 x 630 mm';'Dwustronnie kolorowe 4+4 CMYK';u'Kreda b\u0142ysk 130g';'Bez uszlachetniania 0+0';'100'
Я пытался использовать функцию .attrs следующим образом:
for elem, hehe in zip(elems, hehes):
nazwa = hehe[0].get('title')
format = hehe[1].get('title')
qty = elem.attrs.get('data-qty')
print(nazwa, format, qty)
... но я получил следующие ошибки и не знаю, как поступить дальше:
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "/usr/lib/python2.7/site-packages/bs4/element.py", line 905, in __getitem__
return self.attrs[key]
KeyError: 0
Извините за столь длинный пост, но я хотел предоставить как можно больше подробностей.