Python Web Scraper - ограниченные результаты на странице, определенные страницей JavaScript - PullRequest
0 голосов
/ 20 декабря 2018

У меня проблемы с получением полных результатов поиска на этом сайте: https://www.gasbuddy.com/home?search=67401&fuel=1 Эта ссылка - одна из результатов поиска, с которой у меня проблемы.Проблема в том, что он отображает только первые 10 результатов (я знаю, что это распространенная проблема, которая была описана в нескольких потоках в stackoverflow - но решения, найденные в других местах, здесь не сработали.) HTML-код страницы создается с помощьюфункция javascript, которая не встраивает все результаты на страницу.Я пытался использовать функцию для доступа к ссылке, представленной в кнопке «Еще [...] цены на газ», но это также не дает полных результатов.Есть ли способ получить доступ к этому полному списку, или мне не повезло?

Вот Python, который я использую для получения информации:

# Gets the prices from gasbuddy based on the zip code.
def get_prices(zip_code, store): 
    search = zip_code
    # Establishes the search params to be passed to the website.
    params ={'search': search, 'fuel': 1}
    # Contacts website and make the search.  
    r = requests.get('https://www.gasbuddy.com/home', params=params, cookies={'DISPLAYNUM': '100000000'}) 
    # Turn the results of the above into Beautiful Soup object.
    soup = BeautifulSoup(r.text, 'html.parser') 
    # Searches out the div that contains the gas station information.
    results = soup.findAll('div', {'class': 'styles__stationListItem___xKFP_'})

1 Ответ

0 голосов
/ 20 декабря 2018

Использование селен .Это небольшая работа по настройке, но, похоже, это то, что вам нужно.

Здесь Я использовал его, чтобы нажать на кнопку «показать больше» на веб-сайте.Смотрите больше в моем точном проекте.

from selenium import webdriver
url = 'https://www.gofundme.com/discover'
driver = webdriver.Chrome('C:/webdriver/chromedriver.exe')
driver.get(url)
for elem in driver.find_elements_by_link_text('Show all categories'):
        try:
            elem.click()
            print('Succesful click')
        except:
            print('Unsuccesful click')

source = driver.page_source

driver.close()

Таким образом, в основном вам нужно найти имя элемента, на который вы хотите нажать, чтобы показать больше информации, или вам нужно использовать веб-драйвер для прокрутки вниз по веб-странице.

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