首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >爬虫下载baker的文献

爬虫下载baker的文献

作者头像
DrugScience
发布2021-02-04 14:58:06
发布2021-02-04 14:58:06
4910
举报
文章被收录于专栏:DrugScienceDrugScience

Baker是蛋白质设计领域顶尖的科学家,最近老板让搜集一下他的全部文献,就使用爬虫技术全部收集了。

简单暴力总共291篇

这是网站:

https://www.bakerlab.org/index.php/publications/?limit=1

原始网站

代码语言:javascript
复制
#导入各种包,没有的自己安装
import requests
import bs4
from bs4 importBeautifulSoup
from fake_useragentimport UserAgent
import wget
import numpy as np
from multiprocessingimport Pool
import re
 
#用于拆分列表,原因是每个进程只容许下载9次,没得办法,我只能开30多个进程一起下载了,每个进程下载9篇文献
defsplit_list(pdflist, num):
    #用于拆分列表,主要使用多进程处理
    b = [pdflist[i:i+num] for i inrange(0,len(pdflist),num)]
    return b 
 #对于每个在list1中的文献链接,直接下载
defget_list_pdf(list1):
    for i in list1:
        wget.download(i)
#多进程,创建进程池下载
defmulit_get_pdf(urllist,num,core):
    p=Pool(core)
    split_pdf=split_list(urllist,num)
    for i in range(len(split_pdf)):
       p.apply_async(get_list_pdf,args=(split_pdf[i],))
    p.close()
    p.join()
 
 
if __name__ =='__main__':
#总共就只有10页翻转,设计10个链接
    numlist=np.linspace(1,10,10,dtype=int)
   url='https://www.bakerlab.org/index.php/publications/?limit='
    urllist=[ url+str(i) for i in numlist ]
#爬取每个页面的pdf链接,最终集中在pdflist中
    pdflist = []
    for i in urllist:
        ua=UserAgent(use_cache_server=False)
       headers={"User-Agent":ua.random}
        html = requests.get(i,headers=headers)
        soup =BeautifulSoup(html.content,"html.parser")
        linklist = []
        for x in soup.find_all('a'):
                link = x.get('href')
                if link:
                    linklist.append(link)
        for i in  linklist:
            if re.search(r'pdf',i):
                pdflist.append(i)
    #开始正式下载,开启20个进程      
      mulit_get_pdf(pdflist,9,20)
#最后下载了287篇,我找时间传到百度云上
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FindKey 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档