scholarly-python-package / scholarly

Licence: Unlicense license
Retrieve author and publication information from Google Scholar in a friendly, Pythonic way without having to worry about CAPTCHAs!

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to scholarly

citation-function
Measuring the Evolution of a Scientific Field through Citation Frames
Stars: ✭ 40 (-94.74%)
Mutual labels:  citation-network, citation-analysis
citeproc-php
Full-featured CSL 1.0.1 processor for PHP
Stars: ✭ 59 (-92.25%)
Mutual labels:  citations
Markdown-Templates
Templates for creating scientific, academic and technical documents using Markdown and Pandoc that support equations, code blocks, citations, Unicode symbols and vector graphics.
Stars: ✭ 130 (-82.92%)
Mutual labels:  citations
snowballing
Provides tools for literature snowballing
Stars: ✭ 42 (-94.48%)
Mutual labels:  citations
Rdpack
R package Rdpack provides functions and macros facilitating writing and management of R documentation.
Stars: ✭ 21 (-97.24%)
Mutual labels:  citations
citationhunt
A fun tool for quickly browsing unsourced snippets on Wikipedia.
Stars: ✭ 83 (-89.09%)
Mutual labels:  citations
citation-regexes
A collection of regular expressions for matching citations to state, federal, and even international law
Stars: ✭ 20 (-97.37%)
Mutual labels:  citations
PyPaperBot
PyPaperBot is a Python tool for downloading scientific papers using Google Scholar, Crossref, and SciHub.
Stars: ✭ 184 (-75.82%)
Mutual labels:  scholar
workshops
Scholarly Communications Workshops
Stars: ✭ 13 (-98.29%)
Mutual labels:  scholarly-communications
biblatex-sp-unified
An opinionated biblatex implementation of the Unified Stylesheet for Linguistics Journals
Stars: ✭ 35 (-95.4%)
Mutual labels:  citations
rAltmetric
Query and visualize metrics from altmetric.com
Stars: ✭ 46 (-93.96%)
Mutual labels:  citations
Styles
Official repository for Citation Style Language (CSL) citation styles.
Stars: ✭ 2,458 (+223%)
Mutual labels:  citations
papers-as-modules
Software Papers as Software Modules: Towards a Culture of Reusable Results
Stars: ✭ 18 (-97.63%)
Mutual labels:  citations
lucky-parking
Visualization of parking data to assist in understanding of the effects of parking policies on a neighborhood by neighborhood basis in the City of Los Angeles
Stars: ✭ 24 (-96.85%)
Mutual labels:  citations
qiqqa-open-source
The open-sourced version of the award-winning Qiqqa research management tool for Windows (a bleeding edge dev fork) ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ☞☞☞ File any issues you find in the main repo issue tracker at https://github.com/jimmejardine/qiqqa-open-source/issues
Stars: ✭ 32 (-95.8%)
Mutual labels:  citations
scholia
Wikidata-based scholarly profiles
Stars: ✭ 166 (-78.19%)
Mutual labels:  citations
FunFolDesData
Rosetta FunFolDes – a general framework for the computational design of functional proteins.
Stars: ✭ 15 (-98.03%)
Mutual labels:  publication-data
Neural-ParsCit
Neuralized version of the Reference String Parser component of the ParsCit package.
Stars: ✭ 61 (-91.98%)
Mutual labels:  scholarly-articles
kerkoapp
A web application that provides a faceted search interface for bibliographies managed with Zotero.
Stars: ✭ 30 (-96.06%)
Mutual labels:  scholar

Python package codecov Documentation Status DOI

scholarly

scholarly is a module that allows you to retrieve author and publication information from Google Scholar in a friendly, Pythonic way without having to solve CAPTCHAs.

Installation

Anaconda-Server Badge PyPI version

scholarly can be installed either with conda or with pip. To install using conda, simply run

conda install -c conda-forge scholarly

Alternatively, use pip to install the latest release from pypi:

pip3 install scholarly

or pip to install from github:

pip3 install -U git+https://github.com/scholarly-python-package/scholarly.git

We are constantly developing new features. Please update your local package regularly. scholarly follows Semantic Versioning. This means your code that uses an earlier version of scholarly is guaranteed to work with newer versions.

Optional dependencies

  • Tor:

    scholarly comes with a handful of APIs to set up proxies to circumvent anti-bot measures. Tor methods are deprecated since v1.5 and are not actively tested or supported. If you wish to use Tor, install scholarly using the tor tag as

    pip3 install scholarly[tor]

    If you use zsh (which is now the default in latest macOS), you should type this as

    pip3 install scholarly'[tor]'

    Note: Tor option is unavailable with conda installation.

Tests

To check if your installation is succesful, run the tests by executing the test_module.py file as:

python3 test_module

or

python3 -m unittest -v test_module.py

Documentation

Check the documentation for a complete API reference and a quickstart guide.

Examples

from scholarly import scholarly

# Retrieve the author's data, fill-in, and print
# Get an iterator for the author results
search_query = scholarly.search_author('Steven A Cholewiak')
# Retrieve the first result from the iterator
first_author_result = next(search_query)
scholarly.pprint(first_author_result)

# Retrieve all the details for the author
author = scholarly.fill(first_author_result )
scholarly.pprint(author)

# Take a closer look at the first publication
first_publication = author['publications'][0]
first_publication_filled = scholarly.fill(first_publication)
scholarly.pprint(first_publication_filled)

# Print the titles of the author's publications
publication_titles = [pub['bib']['title'] for pub in author['publications']]
print(publication_titles)

# Which papers cited that publication?
citations = [citation['bib']['title'] for citation in scholarly.citedby(first_publication_filled)]
print(citations)

IMPORTANT: Making certain types of queries, such as scholarly.citedby or scholarly.search_pubs, will lead to Google Scholar blocking your requests and may eventually block your IP address. You must use proxy services to avoid this situation. See the "Using proxies" section in the documentation for more details. Here's a short example:

from scholarly import ProxyGenerator

# Set up a ProxyGenerator object to use free proxies
# This needs to be done only once per session
pg = ProxyGenerator()
pg.FreeProxies()
scholarly.use_proxy(pg)

# Now search Google Scholar from behind a proxy
search_query = scholarly.search_pubs('Perception of physical stability and center of mass of 3D objects')
scholarly.pprint(next(search_query))

scholarly also has APIs that work with several premium (paid) proxy services. scholarly is smart enough to know which queries need proxies and which do not. It is therefore recommended to always set up a proxy in the beginning of your application.

Disclaimer

The developers use ScraperAPI to run the tests in Github Actions. The developers of scholarly are not affiliated with any of the proxy services and do not profit from them. If your favorite service is not supported, please submit an issue or even better, follow it up with a pull request.

Contributing

We welcome contributions from you. Please create an issue, fork this repository and submit a pull request. Read the contributing document for more information.

Acknowledging scholarly

If you have used this codebase in a scientific publication, please cite this software as following:

@software{cholewiak2021scholarly,
  author  = {Cholewiak, Steven A. and Ipeirotis, Panos and Silva, Victor and Kannawadi, Arun},
  title   = {{SCHOLARLY: Simple access to Google Scholar authors and citation using Python}},
  year    = {2021},
  doi     = {10.5281/zenodo.5764801},
  license = {Unlicense},
  url = {https://github.com/scholarly-python-package/scholarly},
  version = {1.5.1}
}

License

The original code that this project was forked from was released by Luciano Bello under a WTFPL license. In keeping with this mentality, all code is released under the Unlicense.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].