Получить имя автора и 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

  • WebScraping с BeautifulSoup или LXML.HTML
  • Итерировать по всем строкам в таблице, используя python lxml xpath
  • Передача мета элементов через функцию обратного вызова в scrapy
  • Scrapy с вложенным массивом
  • Отдельный выходной файл для каждого URL, указанный в списке start_urls паука в scrapy
  • scrapy: объект 'module' не имеет атрибута 'OP_SINGLE_ECDH_USE'
  • Веб-сайт импорта Python не работает
  • как получить доступ к моему 127.0.0.1:8000 из Android-планшета
  • Tried Python BeautifulSoup и Phantom JS: STILL не может очищать веб-сайты
  • Тексты песен для Rap Genius w / Python
  • создание scrapy spiders в моей собственной программе, я не хочу вызывать scrapy из командной строки)
  • Python - лучший язык программирования в мире.