Вот сценарий, который я пытался написать, но не могу найти другой способ написать его, чтобы он работал.
Кажется, это единственная проблема с моим скриптом.
Любая помощь или советы по различным методам разбиения на страницы или шпаргалки "шпаргалки" будут приветствоваться.
import requests
from bs4 import BeautifulSoup
from csv import writer
from time import sleep
all_names = []
base_url = "https://palmettostatearmory.com"
url = "/sights-optics-scopes.html?p=1"
with open("PSA_sights_optics_scopes.csv", "w") as csv_file:
csv_writer = writer(csv_file)
csv_writer.writerow(["Title", "Price", "Item Url", "Image"])
while url:
res = requests.get(f"{base_url}{url}")
print(f"Now Scraping {base_url}{url}...")
soup = BeautifulSoup(res.text, "html.parser")
names = soup.findAll("div", {"class": "media listing"})
#the whole element that is selected
#looping through all of the names with a for loop
for name in names:
title = name.find("h2", {"class": "product-name"}).text.strip()
price = name.find("span", {"class": "price-value"}).text.strip()
img = name.find("img").get("src")
csv_writer.writerow([title, price, img])
#scraping the next page button
next_btn = soup.find(class_="next i-next").get("href")
url = next_btn if next_btn else None
#tells it to click the next page button and then if there is not one, it wont run anymore, making the text above false and stops it
sleep(4)
Вот ошибка, которую я получаю в терминале:
line 34, in <module>
next_btn = soup.find(class_="next i-next").get("href")
AttributeError: 'NoneType' object has no attribute 'get'
Вот что я вижу на сайте:
<li>
<a class="next i-next" href="[https://palmettostatearmory.com/sights-optics-scopes.html?p=2](https://palmettostatearmory.com/sights-optics-scopes.html?p=2)" title="Next">