python爬虫实战——下载百度学术文章标题

该博客介绍了一种爬虫程序,用于从百度学术搜索结果中抓取并保存前几页论文的标题。通过专注于标题信息,简化了搜索结果,便于快速筛选相关论文。代码使用了requests库来获取网页内容,正则表达式来提取标题,并将结果保存到本地文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

       日常学习或工作中,有时候需要找相关论文,多数时候我们直接去百度学术或者谷歌学术直接进行搜索 ,然后逐页的去寻找可能有用的论文。但是每页的搜索结果中除了标题还包含很多其他干扰信息,不利于我们快速去寻找。对于我们而言,最有用的信息其实就是论文标题,因此我写了一个爬虫用来下载前几页所有论文的标题,用于快速寻找有用论文。

二、代码

# import urllib.request
import requests
import re
import os,time


def open_url(url):
    req = requests.get(url)
    req.encoding='utf-8'
    # req.add_header('User-Agent',
    #                'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50')
    html = req.text
    return html


def findapp_url(url):
    html = open_url(url)
    # print(html)
    list_name = re.findall(r'.+title.+target="_blank">(.+em.+)?</a>', html)
    
    return list_name


def saveapp(url):
    list_name = findapp_url(url)
    retry=0
    while not list_name and retry<=3:
        list_name = findapp_url(url)
        retry+=1
    # os.mkdir('appname')
    # os.chdir('appname')
    # with open('appname.txt','w') as f:
    # for each in list_name:
    # f.write(each+'\t')#全部可以打印出来,但是写不进去
    
    # index=0
    for each in list_name:
        # index+=1
        # print(each+'\t'+str(index))
        each=each.replace('<em>','')
        each=each.replace('</em>','')
        print(each + '\n')
        with open(r'C:\Users\USER\Desktop\result.txt', 'a') as f:
            f.write(each+'\n')
        


def downloadapp(search_content,num_page):
    '''
    :param search_content: 搜索词
    :param num_page: 打印前n页的相关论文标题
    :return:
    '''
    url = 'http://xueshu.baidu.com/s?wd=%s&pn=0'%search_content
    i = 1
    
    while i <= num_page:
        print('第' + str(i) + '页')
        open_url(url)
        findapp_url(url)
        saveapp(url)
        
        url = 'http://xueshu.baidu.com/s?wd=%s&pn=%s' %(search_content,str(i * 10))
        # print(url)
        i += 1


if __name__ == '__main__':
    downloadapp(search_content = '推荐算法',num_page=10)

使用起来非常简单,只需要指定搜索内容search_content ,以及打印前几页(num_page)论文标题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值