Я создал парсер, который забирает с сайта всю нужную информацию: описание, заголовок и картинки. Сайт
https://sort-klubnika.ru/
.
Там при переходе на страницу, высвечиваются заголовки, если перейти по ним, отображаются описания (объединенные тегами
<p>
), а также картинки.
Заголовки (A), картинки (C) и описания (B) я запихиваю в Excel таблицу (которая тоже прикреплена)
Но так получается, что когда я просматриваю описания, тексты просто обрубаются, причём, по моему мнению, в абсолютно разных местах.
К примеру возьмем B24, там текст обрубился на моменте "кусты могут не успеть прижиться до жары, поэтому целесообразнее".
Или B171 "большинству заболеваний, в условиях прохладного и".
Количество символов абсолютно разное, почему оно обрубается?
На ошибку, которая выскакивает на 176 запросе можно не обращать внимания, т.к она не столь важна.
Хотя если вы объясните её, я был бы очень признателен.
import requests
from bs4 import BeautifulSoup
import openpyxl
wb = openpyxl.load_workbook(filename = '123123.xlsx')
ws = wb.active
total = 0
def parser():
global total
titlb = []; hrefb = []
response = requests.get("https://sort-klubnika.ru/sorta")
response = response.content
html = BeautifulSoup(response, "html.parser")
title = html.find_all(itemprop="headline")
for titla in title:
titlb.append(titla.text)
for hrefa in title:
hrefb.append(hrefa.a.attrs['href'])
l = 0
description = []
for i in range(5):
img = []
response1 = requests.get(hrefb[l])
response1 = response1.content
html1 = BeautifulSoup(response1, "html.parser")
descripti = html1.find_all("p")
html_photo = html1.find_all(loading="lazy")
for descript in descripti:
description.append(descript.text)
for photob in html_photo:
img.append(photob.get("src"))
fftext = (', '.join(img))
ftext = (', '.join(description))
def pluses():
prosminus = []
prosminusa = html1.find_all("li")
for prosminusb in prosminusa:
prosminus.append(prosminusb.text)
for k in range(5):
prosminus.pop(-1)
for a in range(11):
prosminus.pop(0)
print(titlb[0])
print(description)
#print(*prosminus)
print(img)
l += 1
total += 1
ws[f"A{total}"] = titlb[0]
titlb.pop(0)
ws[f"B{total}"] = ftext
ws[f"C{total}"] = fftext
description.clear()
img.clear()
q = 2
for m in range(35):
titlb = []; hrefb = []
response = requests.get(f"https://sort-klubnika.ru/sorta/page/{q}")
response = response.content
html = BeautifulSoup(response, "html.parser")
title = html.find_all(itemprop="headline")
for titla in title:
titlb.append(titla.text)
for hrefa in title:
hrefb.append(hrefa.a.attrs['href'])
print(titlb)
l = 0
q += 1
description = []
for i in range(5):
img = []
response1 = requests.get(hrefb[l])
response1 = response1.content
html1 = BeautifulSoup(response1, "html.parser")
descripti = html1.find_all("p")
photos = html1.find_all(itemprop="url image")
for descript in descripti:
description.append(descript.text)
for phota in photos:
img.append(phota.get("src"))
def pluses():
prosminus = []
prosminusa = html1.find_all("li")
for prosminusb in prosminusa:
prosminus.append(prosminusb.text)
for k in range(5):
prosminus.pop(-1)
for a in range(11):
prosminus.pop(0)
print(titlb[0])
print(description)
l += 1
total += 1
print(total)
fftext = (', '.join(img))
ftext = (', '.join(description))
print(img)
ws[f"A{total}"] = titlb[0]
ws[f"B{total}"] = ftext
ws[f"C{total}"] = fftext
titlb.pop(0)
img.clear()
wb.save("123123.xlsx")
description.clear()
parser()
Некоторые детали кода закомментированы, их можно не рассматривать.
Ошибку, которая возникает на 176 запросе, можно тоже не рассматривать.