Расположение элемента в bs4 - PullRequest
0 голосов
/ 01 марта 2019

Попытка собрать всю информацию о каждом элементе бульдозера на этой странице.Я только начал и имею только честное представление о чистке, но не уверен, как это сделать.

driver=webdriver.Firefox()
driver.get('https://www.rbauction.com/dozers?keywords=&category=21261693092')    
soup=BeautifulSoup(driver.page_source,'html.parser')

#trying all d/f ways buh getting oly nonetype or no element
get= soup.findAll('div' , attrs={'class' : 'sc-gisBJw eHFfwj'})
get2= soup.findAll('div' , attrs={'id' : 'searchResultsList'})
get3= soup.find('div.searchResultsList').find_all('a')

Я должен войти в каждый класс / id и зациклить ['href'] и получить информацию окаждый бульдозер.Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Вы можете просто использовать запросы

import requests 
headers = {'Referrer':'https://www.rbauction.com/dozers?keywords=&category=21261693092'}
data = requests.get('https://www.rbauction.com/rba-msapi/search?keywords=&searchParams=%7B%22category%22%3A%2221261693092%22%7D&page=0&maxCount=48&trackingType=2&withResults=true&withFacets=true&withBreadcrumbs=true&catalog=ci&locale=en_US', headers = headers).json()

for item in data['response']['results']:
    print(item['name'],item['url'])
0 голосов
/ 01 марта 2019

Вам нужно дождаться загрузки данных, которые вы ищете, прежде чем читать их в объект BeautifulSoup.Используйте WebDriverWait в селене, чтобы дождаться загрузки страницы, поскольку для полного рендеринга требуется время:

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By

driver = webdriver.Firefox()
driver.get('https://www.rbauction.com/dozers?keywords=&category=21261693092')
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'searchResultsList')))
soup = BeautifulSoup(driver.page_source,'html.parser')

Эта строка должна возвращать hrefs со страницы:

hrefs = [el.attrs.get('href') for el in soup.find('div', attrs={'id': 'searchResultsList'}).find_all('a')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...