Beautiful Soup работает только при ручном выполнении кода построчно - PullRequest
0 голосов
/ 07 августа 2020

Я новичок в программировании, Python и парсинге веб-страниц. Я пытаюсь просмотреть страницу результатов поиска Amazon по ценам на товары. Всякий раз, когда я запускаю этот код как блок, price возвращается с 0 элементами. Однако, если я вручную запускаю каждую строку за раз, price возвращается как правильный список цен на странице.

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Safari()
url = 'https://www.amazon.com/s?k=crystal+chandelier&qid=1596736254&ref=sr_pg_1'
get = driver.get(url)
html = driver.page_source
soup = BeautifulSoup(html, 'lxml')
price = soup.find_all('span', class_ = 'a-offscreen')

for data in price:
    print(data.text)

Я не получаю вывода от запуска всего этого. Когда я запускаю его построчно, это мой результат:

$169.99
$99.99
$31.99
$169.97
$31.99
$39.99
$129.00
$72.35
$99.99
$49.90
$79.99
$214.98
$39.99
$89.99
$169.99
$56.99
$59.99
$149.99
$148.00
$124.28
$150.00
$124.50
$148.00
$438.00
$526.00
$119.99
$187.77
$139.99
$99.99
$369.00
$159.99
$169.99
$55.69
$29.98
$229.99
$169.99
$119.99
$119.99
$69.99
$369.00
$75.00
$63.99
$35.90
$75.99
$33.99
$88.00
$30.99
$298.00
$82.00
$36.99
$29.60
$119.99
$116.99
$124.80
$25.99
$32.99
$161.77
$114.99
$139.99
$256.16
$129.00
$229.99
$63.99
$199.00
$129.99
$129.99
$109.99

1 Ответ

0 голосов
/ 07 августа 2020

Вы можете использовать requests библиотеку с правильными заголовками HTTP, чтобы получить правильную версию страницы:

import requests
from bs4 import BeautifulSoup

headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:79.0) Gecko/20100101 Firefox/79.0',
    'Accept-Language': 'en-US,en;q=0.5'
}

url = 'https://www.amazon.com/s?k=crystal+chandelier&qid=1596736254&ref=sr_pg_1'
soup = BeautifulSoup(requests.get(url, headers=headers).content, 'lxml')
price = soup.find_all('span', class_ = 'a-offscreen')

for data in price:
    print(data.text)

Печать:

$169.99
$99.99
$31.99
$89.99
$169.99
$119.99
$82.00
$148.00
$214.98

...and so on.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...