Как определить количество ссылок на статью в год для автора в Google Golopar? - PullRequest
0 голосов
/ 30 апреля 2019

Я хотел бы нарисовать гистограмму того, как h-индекс автора Google-ученого меняется с каждым годом. Чтобы вычислить это, мне понадобится количество ссылок на бумагу в год и вычислить h-индекс в год.

Мне удалось получить график на странице профиля автора. Возьмите в качестве примера ученого Google Альберта Эйнштейна https://scholar.google.com/citations?user=qc6CJjYAAAAJ&hl=en, Я получил график количества цитирований за год справа, но это не правильно. Что я действительно хочу, так это то, что когда вы нажимаете на бумагу, появляется график «Всего ссылок по годам». Я использую пакет BeautifulSoup и селен в Python. Моя самая большая проблема сейчас: Если вы проверяете html-код автора, содержание каждой статьи скрыто, как пролистать каждую статью и получить доступ к графику общего количества цитирований за год? *

Вот что я сделал для графика справа

def get_citation_by_year(url):
    s = soup(str(urllib.request.urlopen(url).read()), 'lxml')
    print(s)
    #print(s.title.text) #whose google scholar is this?
    years = list(map(int, [i.text for i in s.find_all('span', {'class':'gsc_g_t'})]))
    citation_number = list(map(int, [i.text for i in s.find_all('span', {'class':'gsc_g_al'})]))
    final_chart_data = dict(zip(years, citation_number))
    df = pd.DataFrame({'Year': years, 'Cited_By': citation_number})
    return(df)

Нажмите кнопку «Показать больше», чтобы отобразить максимальное количество статей:

def get_citation_byarticle_byyear(url):
    #quote_page is an URL of google scholar page of a specific author
    quote_page = url
    page = urlopen(quote_page)
    # Click Show more 
    chrome_options = Options()  
    chrome_options.add_argument("--headless")

    driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=r"/Users/upcrown/Desktop/chromedriver") #need to download ChromeDriver, http://chromedriver.chromium.org/downloads

    driver.implicitly_wait(30)
    driver.get(url)

    python_button = driver.find_element_by_xpath('//*[@id="gsc_bpf_more"]')
    python_button.click() #click fhsu link

    time.sleep(5)
    # Selenium hands the page source to Beautiful Soup
    s = BeautifulSoup(driver.page_source, "html.parser")

    year = list(map(str, [i.text for i in s.find_all('span', {'class': 'gsc_a_h gsc_a_hc gs_ibl'})])) ##string not int because some are ''

    #find the paper
    #paper = soup.find_all("a", attrs={"class": "gsc_a_at"})
    paper = list(map(str, [i.text for i in s.find_all('a', {'class': 'gsc_a_at'})]))
    #find the citations 
    #citations = soup.find_all("a", attrs={"class":"gsc_a_ac gs_ibl"})
    citations = list(map(str, [i.text for i in s.find_all('a', {'class': 'gsc_a_ac gs_ibl'})]))

Испытывались другие инструменты: R "стипендиат", не имеет количества цитирований на бумагу в год, имеет только количество цитирований в год. Приложение Windows: Опубликовать или Погасить (та же проблема). Scopus API (не содержит полных списков всех статей автора в качестве ученого Google)

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