Получить имя автора и URL-адрес тега у google scientar

Я хочу записать в CSV-файл список всех авторов с их URL-адресом в файл CSV, который классифицирует себя как конкретный тег в Google Scholar. Например, если бы мы взяли «безопасность», я бы хотел получить этот вывод:

author url Howon Kim https://scholar.google.pl/citations?user=YUoJP-oAAAAJ&hl=pl Adrian Perrig https://scholar.google.pl/citations?user=n-Oret4AAAAJ&hl=pl ... ... 

Я написал этот код, который печатает имя каждого автора

 # -*- coding: utf-8 -*- import urllib.request import csv from bs4 import BeautifulSoup url = "http://scholar.google.pl/citations?view_op=search_authors&hl=pl&mauthors=label:security" page = urllib.request.urlopen(url) soup = BeautifulSoup(page, 'lxml') mydivs = soup.findAll("h3", { "class" : "gsc_1usr_name"}) outputFile = open('sample.csv', 'w', newline='') outputWriter = csv.writer(outputFile) for each in mydivs: for anchor in each.find_all('a'): print (anchor.text) 

Однако это только для первой страницы. Вместо этого я хотел бы пройти через каждую страницу. Как я могу это сделать?

2 Solutions collect form web for “Получить имя автора и URL-адрес тега у google scientar”

Я не пишу код для вас .. но я дам вам схему, как вы можете.

Посмотрите на нижнюю часть страницы. См. Следующую кнопку? Найдите его, содержащий div, имеет id gsc_authors_bottom_pag который должен быть легко найти. Я сделал бы это с селеном, нахожу следующую кнопку (справа) и нажимаю на нее. Подождите, пока страница загрузится, повторите попытку. Обрабатывать края (вне страниц и т. Д.).

Если after_author=* не изменился в URL- after_author=* вы можете просто url начальный уровень url . Но если вы не захотите попытаться взломать этот код (маловероятно), просто нажмите следующую кнопку.

На этой странице используйте <button> вместо <a> для ссылки на следующую / предыдущую страницу.

Кнопка на следующей странице имеет aria-label="Następna" .

На следующей странице есть две кнопки, но вы можете использовать любой из них.

Кнопка имеет код JavaScript для перенаправления на новую страницу

  window.location=url_to_next_page 

но это простой текст, поэтому вы можете использовать нарезку, чтобы получить только URL-адрес

 import urllib.request from bs4 import BeautifulSoup url = "http://scholar.google.pl/citations?view_op=search_authors&hl=pl&mauthors=label:security" while True: page = urllib.request.urlopen(url) soup = BeautifulSoup(page, 'lxml') # ... do something on page ... # find buttons to next page buttons = soup.findAll("button", {"aria-label": "Następna"}) # exit if no buttons if not buttons: break on_click = buttons[0].get('onclick') print('javascript:', on_click) #add `domain` and remove `window.location='` and `'` at the end url = 'http://scholar.google.pl' + on_click[17:-1] # converting some codes to chars url = url.encode('utf-8').decode('unicode_escape') print('url:', url) 

Кстати: если вы говорите по-польски, вы можете посетить на Facebook: Python Poland или Python: pierwsze kroki

Interesting Posts

Полноразмерный словарь / тезаурус

Ошибка при проверке цели: ожидается, что dense_20 будет иметь форму (None, 3), но получил массив с формой (1200, 1)

Доступ запрещен с использованием Py2exe

Флакон WTForms: разница между DataRequired и InputRequired

Безопасен ли сервер в комплекте с Flask для использования в производстве?

Как преобразовать строку в имя переменной?

Как я могу сгенерировать файл «на лету» и удалить его после загрузки?

Как добавить еще одну функцию (длину текста) в текущий пакет классификации слов? Scikit учиться

Поддерживает ли Python 2.5.2 Unicode для lower () и upper ()?

Выполнять запросы с использованием Python over Tor

Pythonic способ печати 2D-списка – Python

Как настроить приложение Flask с SQLAlchemy для тестирования?

TypeError: __init __ () принимает ровно 1 аргумент (3 данных) pyXML

Булевы имеют два возможных значения. Существуют ли типы, которые имеют три возможных значения?

Python – re.split: дополнительные пустые строки, которые начинаются и заканчиваются

Python - лучший язык программирования в мире.