Python, использующий запросы, получает данные html после того, как страница была изменена JS [дубликат]Python

Программы на Python
Ответить
Anonymous
 Python, использующий запросы, получает данные html после того, как страница была изменена JS [дубликат]

Сообщение Anonymous »

Я пытался найти что-то подобное в Интернете, но не нашел решения своей проблемы.
Я пытаюсь создать веб-сайт, который будет отслеживать цены на продукты, которые они продают, поскольку я только начал создавать этот веб-сайт, мне нужно ввести все продукты в мою базу данных, чтобы их можно было отслеживать в первую очередь, но проблема в том, что их полная карта сайта продукта, похоже, не работает. на сегодняшний день с их продуктами, поэтому я не могу использовать это, поэтому я использую обычную страницу со списком продуктов.
Теперь реальная проблема заключается в том, что когда вы используете 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
Я знаю, что мне, возможно, придется использовать другую библиотеку, чтобы дождаться загрузки и завершения JavaScript для получения данных страницы, но я начал парсинг веб-страниц только сегодня, поэтому я не особо знать, какие библиотеки существуют и их возможности.


Подробнее здесь: https://stackoverflow.com/questions/791 ... ered-by-js
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»