#python #python-3.x #pandas #selenium #web-scrapin&
#python #python-3.x #pandas #selenium #очистка веб-страниц
Вопрос:
Я только начал изучать очистку данных. Для этого я использую Selenium и сохраняю данные в таблице Excel. Проблема в том, что я не могу понять, как мне заставить selenium циклически нажимать на следующие страницы и очищать их данные тоже, пока страницы не закончатся. Чтобы лучше понять это, ниже приведен мой полный код.
from selenium import webdriver
import pandas as pd
from openpyxl.workbook import Workbook
DRIVER_PATH = 'C:/Users/Neha/Downloads/chromedriver_win32/chromedriver'
driver = webdriver.Chrome(executable_path=DRIVER_PATH)
driver.&et('https://www.fundoodata.com/citiesindustry/19/2/list-of-information-technolo&y-(it)-companies-in-noida')
company_names = driver.find_elements_by_class_name('headin&')
names_list = []
for name in company_names:
text = name.text
names_list.append(text)
print(text)
driver.quit()
df = pd.DataFrame(names_list)
writer = pd.ExcelWriter('companies_names.xlsx', en&ine='xlsxwriter')
df.to_excel(writer, sheet_name='List')
writer.save()
Я хочу, чтобы он очищал названия компаний со всех страниц. Атрибут и XPath следующей кнопки —
<li&&t;<a href="/citiesindustry/19/2/list-of-information-technolo&y-(it)-companies-in-noida?amp;amp;pa&eno=2amp;amp;tot_rows=606amp;amp;total_results=606amp;amp;no_of_offices=0"&&t;Next</a&&t;</li&&t;
Xpath
//*[@id="main-container"]/div[2]/div[4]/div[2]/div[1]/div/ul/li[7]/a
Ответ №1:
Попробуйте цикл while, это будет выглядеть примерно так:
links = driver.find_elements_by_css_selector('[rel=next]')
while len(links) &&t; 0:
driver.&et(links[0].&et_attribute('href'))
# do stuff
links = driver.find_elements_by_css_selector('[rel=next]')
Комментарии:
1. это не работает. Вы предлагаете css_selector, но тег a не содержит никакого css-класса, только href и текст с надписью «next». Если возможно, пожалуйста, посетите сайт здесь для лучшего понимания fundoodata.com/citiesindustry/19/2 /…
2. Посмотрите мою правку, она есть, но это мета-тег, поэтому вы не можете щелкнуть по нему.