Я пытаюсь создать веб-сайт, который будет отслеживать цены на продукты, которые они продают, поскольку я только начал создавать этот веб-сайт, мне нужно ввести все продукты в мою базу данных, чтобы их можно было отслеживать в первую очередь, но проблема в том, что их полная карта сайта продукта, похоже, не работает. на сегодняшний день с их продуктами, поэтому я не могу использовать это, поэтому я использую обычную страницу со списком продуктов.
Теперь реальная проблема заключается в том, что когда вы используете URL-адрес с параметром чтобы выбрать конкретную страницу, он фактически всегда получает содержимое страницы 1, а затем использует JavaScript для обновления html до фактического правильного содержимого для номера страницы. Я использую запросы и BeautifulSoup, чтобы получить страницу и проанализировать ее.
Это не совсем актуально, но вот мой код:
Код: Выделить всё
class CategoryScraper():
def __init__(self, url):
self.url = url
self.headers = {
'user-agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:131.0) Gecko/20100101 Firefox/131.0'
}
self.products = []
self.html = None
def get_data(self):
self.products = []
self.get_html()
product_list = self.html.find('div', attrs={'class': 'productList'})
product_containers = product_list.find_all('div', attrs={'class': 'itemContainer'})
for product in product_containers:
anchor = product.find('a')
product_name = anchor.find('div', attrs={'class': 'itemTitle'}).get_text()
product_price = anchor.find('div', attrs={'class': 'itemPrice'}).find('span').get_text().split('\xa0')[1]
product_url = anchor['href']
self.products.append(
{'product_name': product_name, 'product_price': product_price, 'product_url': product_url})
def get_html(self):
page = requests.get(self.url, headers=self.headers)
self.html = BeautifulSoup(page.content, 'html5lib')
def change_url(self, url):
self.url = url
self.get_html()
def get(self):
self.get_data()
return self.products
Подробнее здесь: https://stackoverflow.com/questions/791 ... ered-by-js
Мобильная версия