Здравствуйте.
Скажите пожалуйста, каким образом я могу получить определенные данные с html страницы (зная селектор элемента), но имея при этом 100+ страниц.(аля выдача гугла).
hardwellZero: питон же исключительно гибкий язык.
абстрактный пример, как это можно сделать:
from grab import Grab()
g=Grab()
url_list = [] # тут список ваших урлов
def page_handler(url):
#функция принимает на вход url в виде строки
resp = g.go(url)
data = resp.xpath() #тут xpath-селектор, возможно синтаксис немного не такой
return data
all_data = [page_handler(url) for url in url_list]
print(all_data)
Чем такой подход не устраивает?
Алгоритм таков (выдача гугла), такой себе псевдокод:
смотрим страницу выдачи
берем все 10 урлов сайтов
перебираем их все
открывая каждый и беря нужную инфу с помощью BeautifulSoup
смотрим адрес следующей страницы гугла
подставляем её в начало программы
И так продолжаем или до конца всех найденных страниц, или указывайте нужную глубину просмотра.
Вытаскивайте все url из страницы гугла, и складывайте в список
url = ['url1', 'url2', 'urlN']
Далее проходите по этому списку и собранные данные уже кладите в БД, или в файл, или еще куда-то.
for i in xrange(len(url)):
page = mech.open(url[i])
html = page.read()
soup = BeautifulSoup(html)
extract(soup)
Я не совсем пойму, вы же говорите что имеете уже 100+ страниц(urlов)
Но если эти урлы где-то на странице, так возьмите сначала эту страницу распарсите, и положите все урлы в список, а потом циклом по этому списку пройдите, заходите на каждую страницу и вытаскивайте нужные данные.
Кнопка перехода, это та же ссылка (ну или она должна быть связана с ссылкой). Открывайте её программно как обычную страницу, и читайте так же информацию как и все остальные.
Мало данных для более детального совета (для того кода что вы дали, я вам показал как циклом урлы подставлять)
Могу только схематически еще раз пояснить, но применять уже вам
1 парсите главную страницу где урлы, собираете их в список
1.1 если на этой странице не все урлы, то задайте цикл и проходите по всем ссылкам и собирайте все урлы
2 запускайте цикл по собраным урлам и заходите на каждую страницу
3 забирайте данные с каждой страницы
То есть в итоге у вас должно быть цикл на 1 пункт, цикл на 1.1 пункт, цикл по 2 пункту, и сбор данных (тут можно и с циклом и без).
Если вы знаете как отличить следующий урл, то не вижу проблемы.
Открываете первую страницу, смотрите есть ли ссылка на следующую, если есть, то переходим на неё. И с начала, если есть урл на следующую, то переходим на неё. И с начала. Но добавьте условие, если следующей ссылки не найдено, то выходим из цикла.
Начинаем отсчет от class="csb gbil" если есть следующий td с начинкой a, то забираем его урл и переходим на него, на этой странице, вы будите уже на страницу больше, следовательно просматривая снова это список от class="csb gbil" вы найдете снова следующую страницу, и так дальше.
Ставите искусственно константу глубины прохода, и скрипт ваш дальше чем надо не зайдет, хотя если брать гугл, то сомневаюсь что он вам даст себя просто так парсить, но пробуйте.