Как пролистать все веб-страницы в селене? - PullRequest
0 голосов
/ 18 апреля 2020

Я написал этот код. Я хочу получить все данные со всех страниц и сохранить их в файле CSV. Но я не знаю, что делать дальше. Я могу сделать это в BeautifulSoup, но это не то же самое в комбинации селена и BeautifulSoup

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from time import sleep
from bs4 import BeautifulSoup as bs
import pandas

chrome_option = Options()
chrome_option.add_argument("--headless")


browser = webdriver.Chrome(executable_path="D:/chromedriver.exe", chrome_options=chrome_option)

# list of data
names = []
license_num = []
types = []
contacts = []
links = []



def scrape(url):
    browser.get(url)
    sleep(5)
    html = browser.execute_script("return document.documentElement.outerHTML")

    sel_soup = bs(html, "html.parser")

    containers = sel_soup.find_all(class_ = "d-agent-card container_13WXz card_2AIgF")


    for cont in containers:
        # agent name
        agent = cont.find("h4").text.strip()
        names.append(agent)

        # agent type

        tp = cont.find("h5").text.strip()
        types.append(tp)

        # agent contact

        contact = cont.find("button", {"class": "button_3pYtF icon-left_1xpTg secondary_KT7Sy link_-iSRx contactLink_BgG5h"})
        if contact is not None:
            contacts.append(contact.text.strip())
        elif contact is None:
            contacts.append("None")

        # agent link

        link = cont.find("div", {"class": "linksContainer_1-v7q"}).find("a")

        if link is not None:
            links.append(link["href"])
        elif link is None:
            links.append("None")

        # license 

        licns = cont.find("p", {"class": "license_33m8Z"}).text
        license_num.append(licns)

for page in range(1, 27):
    urls = f"https://www.remax.com/real-estate-agents/Dallas-TX?page={page}"
    scrape(urls)


df = pandas.DataFrame({
    "Agent Name": names,
    "Agent Type" : types,
    "Agent License Number": license_num,
    "Agent contact Number": contacts,
    "Agent URL": links
    })
df.to_csv("data.csv", index=False)   

С этим я получаю только 596 строк данных. Но я хочу получить 24x25 + 19 = 619 строк. Каждая страница имеет 24 строки данных. Я хочу их получить. Но я получаю данные только на 23 страницах. теперь я получаю сообщение об ошибке ...

{"QTM: JSEvent: TypeError: Невозможно прочитать свойство 'data' из неопределенного !! window.QuantumMetricAPI.lastXHR.data && !! JSON .parse (QuantumMetricAPI .lastXHR.data) .term "}

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