Bootstrap

python 爬虫自动获取 GB/T 7714 引用格式

python 自动获取 GB/T 7714 引用格式

参考:python爬虫实现自动获取论文GB 7714引用
介绍:从 Google Scholar 网站(具体为 https://xueshu.aigrogu.com/)收集文章信息,包括文章标题、链接和 GB/T 7714 引用格式。该代码接收一个文章标题列表,遍历列表中的每个标题,打开网页进行搜索,解析搜索结果页面,提取相关信息,并将提取到的 GB/T 7714 引用信息存储到文件 references.txt 中。

1. 准备步骤(需要安装的库)

  • selenium:用于自动化浏览器操作,可通过 pip install selenium 安装。
  • beautifulsoup4:用于解析 HTML 页面,可通过 pip install beautifulsoup4 安装。

2. 主要功能:

  • 搜索文章信息
    • 接收文章标题列表,使用 selenium 打开 https://xueshu.aigrogu.com/ 并输入文章标题进行搜索。
    • 等待搜索结果加载,使用 WebDriverWaittime.sleep 实现。
  • 提取信息
    • BeautifulSoup 解析页面,提取搜索结果中的文章标题和链接。
    • 点击引用按钮,提取 GB/T 7714 引用信息,将结果存储在字典中。
    • 只处理首个搜索结果。
  • 存储结果
    • 存储提取信息到 article_results 列表并关闭浏览器。
    • 将 GB/T 7714 引用信息写入 references.txt 文件。

3. 代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
import time


def collect_scholar_info(article_titles):
    """
    从 Google Scholar 收集文章信息。
    Args:
        article_title: 文章标题
    Returns:
        一个字典,包含文章信息,或者 None 如果找不到文章或发生错误。
    """
    article_results = []
    for article_title in article_titles:
        options = webdriver.ChromeOptions()
        driver = webdriver.Chrome(options=options) 
        driver.get("https://xueshu.aigrogu.com/")
        search_box = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.NAME, "q"))
        )
        search_box.send_keys(article_title)
        search_box.submit()
        time.sleep(3)
        page_source = driver.page_source
        soup = BeautifulSoup(page_source, 'html.parser')
        results = soup.find_all('div', class_='gs_ri')
        first_result = None
        for result in results:
            title = result.find('h3', class_='gs_rt').text
            link = result.find('a')['href']
            first_result = {'title': title, 'link': link}
            cite_button = WebDriverWait(driver, 2).until(
                EC.element_to_be_clickable((By.CSS_SELECTOR, "a.gs_or_cit.gs_or_btn.gs_nph"))
            )
            cite_button.click()
            time.sleep(2) 
            new_page_source = driver.page_source
            new_soup = BeautifulSoup(new_page_source, 'html.parser')
            time.sleep(2) 
            try:
                gb_citation = new_soup.select_one('#gs_citt > table > tbody > tr:nth-child(1) > td:nth-child(2) > div').text
                first_result['citation_GBT'] = gb_citation.strip() if gb_citation else "未能找到 GB/T 7714 引用"
            except:
                first_result['citation_GBT'] = "未能找到 GB/T 7714 引用"
            break
        article_results.append(first_result)
    driver.quit()
    return article_results


if __name__ == '__main__':
    references = ["Deep learning", "Deep learning classification of land cover and crop types using remote sensing data", "Deep learning for time series classification: a review"] 
    res = collect_scholar_info(references)
    output_file = "references.txt"
    try:
        with open(output_file, "w", encoding="utf-8") as file:
            for reference in res:
                try:
                    file.write(reference['citation_GBT'] + "\n")
                except:
                    file.write('未找到引用' + "\n")
    except Exception as e:
        print(f"发生错误:{e}")

此代码通过结合 seleniumBeautifulSoup 实现了从特定网站自动搜索文章信息并提取 GB/T 7714 引用信息的功能,可将结果存储到文件中。需注意 seleniumchromedriver 路径和等待时间的调整,以确保程序的稳定运行。

;