精华内容
下载资源
问答
  • 利用python爬取pubmed中论文标题

    很少有人爬pubmed的,我来填个空,直接上干货。

    import requests
    import re
    
    #获取文章PMID号
    def html_re():
        response = requests.get(url).text
        id = re.findall('data-chunk-ids="(.*?)>', response, re.S)
        ids = id[0].split(',')
        return ids
    #获取标题
    def html_title():
        content = []
        for i in url1:
            html1 = requests.get(i)
            html1 = html1.text
            title = re.findall('<title>(.*?) - PubMed</title>',html1)
            content.append(title)
        return content
    
    
    if __name__ == '__main__':
        content=input('请输入关键词:')
        url='https://pubmed.ncbi.nlm.nih.gov/?term='+content+'&sort=date'
        ids=html_re()
        url1=['https://pubmed.ncbi.nlm.nih.gov/'+i+'/' for i in ids]
        title=html_title()
        print(title)
    

    执行后,输入要搜索的关键词,因为是国外的网站,关键词必须是英文,例如KIT,然后回车,这里只显示第一页所有文章的标题,

    请输入内容:melanin
    [['MiR-139 protects against oxygen-glucose deprivation/reoxygenation (OGD/R)-induced nerve injury through targeting c-Jun to inhibit NLRP3 inflammasome activation'],
     ['Anti-cancer effect of Urginea maritima bulb extract invitro through cell cycle arrest and induction of apoptosis in human breast cancer cell lines'],
     ['Pilot Study of an Overdose First Aid Program in Juvenile Detention'],
     ['CD117 Is a Specific Marker of Intraductal Papillary Mucinous Neoplasms (IPMN) of the Pancreas, Oncocytic Subtype'],
     ['Exploring Seminal Plasma GSTM3 as a Quality and In Vivo Fertility Biomarker in Pigs-Relationship with Sperm Morphology'], 
     ['Reproductive dysfunction linked to alteration of endocrine activities in zebrafish exposed to mono-(2-ethylhexyl) phthalate (MEHP)'],
     ['Increasing the Functional Group Diversity in Helical β-Peptoids: Achievement of Solvent- and pH-Dependent Folding'], 
     ['Inhibition of B7-H4 promotes hepatocellular carcinoma cell apoptosis and autophagy through the PI3K signaling pathway'], 
     ['Switch Control Inhibition of KIT and PDGFRA in Patients With Advanced Gastrointestinal Stromal Tumor: A Phase I Study of Ripretinib']]
    

    。。。。。。。

    展开全文
  • 需要准备的工具:刷博客访问量的原理是:打开一次网页博客访问量就增加一次。(新浪,搜狐等博客满足这个要求)count.pyimport webbrowser as webimport timeimport osimport randomcount = random.randint(1,2)j=0...

    需要准备的工具:

    刷博客访问量的原理是:打开一次网页博客访问量就增加一次。(新浪,搜狐等博客满足这个要求)

    count.py

    import webbrowser as web

    import time

    import os

    import random

    count = random.randint(1,2)

    j=0

    while j

    i=0

    while i<=8 :

    web.open_new_tab("http://blog.sina.com.cn/s/blog_552d7c620100aguu.html") #网址替换这里

    i=i+1

    time.sleep(3) #这个时间根据自己电脑处理速度设置,单位是s

    else:

    time.sleep(10) #这个时间根据自己电脑处理速度设置,单位是s

    os.system("taskkill /F /IM chrome.exe") #google浏览器,其他的更换下就行

    #print "time webbrower closed"

    j=j+1

    刷赞就需要用Fiddler来获取Request header数据,比如Cookie,Host,Referer,User-Agent等

    sina.py

    import urllib.request

    import sys

    points = 2 #how count ?

    if len(sys.argv) > 1:

    points = int(sys.argv[1])

    aritcleUrl = ""

    point_header = {

    "Accept" : "*/*",

    "Cookie" : "",#填你的cookie信息

    "Host":"", #主机

    "Referer" : "",

    "User-Agent" : "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36",

    }

    for i in range(points):

    point_request = urllib.request.Request(aritcleUrl, headers = point_header)

    point_response = urllib.request.urlopen(point_request)

    上面的header头通过抓包数据可以获取,这里只是提供思路。

    展开全文
  • 采用Python3.9爬取IEEE数据库论文信息,遇到的问题及解决方法记录。主要包括:①requests库的GET请求和POST请求;②HTML中JavaScript数据解析


    说明:本文为个人解决问题过程记录,方法和理论不一定完全正确,如有错误,欢迎指出。


    1 获取文章列表

    1.1 问题

      IEEE是第3个爬的数据库,前两个Pubmed和ScienceDirect都直接用requests.get()可以直接返回一个Response对象,然后用Beautifulsoup解析Response的.content,最后用find和find_all找想要的信息就可以了,如下所示:

    # 模板
    res = requests.get(url, params=searchDic)           # 发送GET请求
    s = BeautifulSoup(res.content, 'lxml')              # 解析html
    amount = s.find('div', class_="results-amount")     # 获取文章总数量
    

      修改代码后程序报错,调试发现是find函数找不到类名

    url = 'https://ieeexplore.ieee.org/search/searchresult.jsp? \
            newsearch=true&queryText=support'
    IEEE_response = requests.get(url=url, verify=False)
    response_text = IEEE_response.content
    s = BeautifulSoup(response_text, 'lxml')
    papers = s.find_all('div', class_="List-results-items")     # 找不到List-results-items
    

      问题就出在这,在浏览器里F12可以找到对应信息的标签,但是在程序里直接find却找不到,直接输出Beautifulsoup解析后的数据,发现问题。

      Beautifulsoup解析后的数据如下:

    <div class="global-content-wrapper u-relative">
    <xpl-root>
    <div class="Spinner"></div>
    </xpl-root>
    </div>
    

      浏览器中html如下:
    在这里插入图片描述
      论文列表就在红色箭头所指向的标签,但是get返回的信息中直接被“删除”了。

    1.2 解决方法

      网上百度了一圈,找到了解决方法,最开始找到的是方法1,后来又找到了方法2.

    1.2.1 创建浏览器对象进行模拟访问[14]^{[1-4]}

      刷新网页,可以发现论文信息那部分是其它页面显示后过了一阵才刷出来的。这是因为IEEE用了ajax慢加载的方式来防止爬虫爬取页面,直接访问链接并不能得到任何东西。对于这种问题我们可以使用工具selenium来解决。selenium是一种自动化测试的工具,可以控制浏览器来自动完成一些动作,在这里正好能成为 ajax 防爬的克星。

      代码如下:

    browser = webdriver.Chrome()
    browser.get(url)
    browser.implicitly_wait(10)       # 隐式等待
    WebDriverWait(browser, 5, 0.5).until(lambda x:
                    x.find_elements_by_class_name('List-results-items'))
    amount = browser.find_element_by_xpath("//*[@id=\"xplMainContent\"] \
                    /div[1]/div[2]/xpl-search-dashboard/section/div/div[1] \
                    /span[1]/span[2]")
    

      通过创建浏览器对象,selenium会自动打开chrome,来模拟浏览器访问。通过WebDriverWait().until()来等待网页加载完成后,再用find_element_by_×××来获取数据。

      不过这样存在一定的问题,由于是模拟人去浏览网页以及浏览器启动,网页渲染等操作一个不落,所以无法发挥爬虫的机器高效性;另外即使是无界浏览模式,浏览器还是会占用大量的电脑内存资源。

    1.2.2 POST请求[5]^{[5]}

      参考[5]中搜索部分的代码可以正常运行,且获得正确数据,发现是用post请求进行访问的,于是研究了一番。

      浏览器中按F12看网址加载过程,方法如下:
    在这里插入图片描述

    如下图,点进Preview中发现,想要的信息都在这里
    在这里插入图片描述

    如下图,点击Headers,访问方式是POST
    在这里插入图片描述

    如下图,Headers信息
    在这里插入图片描述

      因此确定要用POST方式来进行访问,Resoponse Headers中显示返回类型为json格式,知道这些信息后就可以开始写代码处理了。

    # 请求头
    headers = {
                'Accept': 'application/json,text/plain,*/*',
                'Accept-Encoding': 'gzip,deflate,br',
                'Accept-Language': 'zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7',
                'Connection': 'keep-alive',
                'Content-Length': '122',
                'Content-Type': 'application/json',
                'Referer': 'https://ieeexplore.ieee.org/search/searchresult.jsp? \
                            newsearch=true&queryText=mechanical',
                'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; \
                                rv:27.0) Gecko/20100101 Firefox/27.0'
        
            }
    
    # 请求体
    data = {
            'newsearch': 'true',
            'queryText': keyword,
            'pageNumber': page,
            'publicationYear': year_range,
            'rowsPerPage': 100
            }
    
    # 返回结果处理
    url = 'https://ieeexplore.ieee.org/rest/search'
    IEEE_response = requests.post(url=url, data=json.dumps(data), \
                                    headers=headers, verify=False)
    response_text = IEEE_response.text
    papers = json.loads(response_text)['records']
    for paper in papers:
        paper_name = paper['articleTitle']
        journal_name = paper['publicationTitle']
        paper_date = paper['publicationDate']
        paper_abstract = paper['abstract']
        paper_doi = paper['doi']
        paper_num = paper['articleNumber']
    

      可以看出,第2种方式在进行数据处理时也比较简单明了,因此我采用了第2种方法。

    2 获取完整摘要

    2.1 问题

      通过上述步骤,就可以顺利的从IEEE检索结果中获取论文信息了,如论文题目、作者、会议/期刊名、日期、摘要、doi等。但是,获得的摘要是不完整的,因为在搜索结果列表状态下的论文摘要只显示了一部分,剩下的需要到文章的详情页才能看到。
    在这里插入图片描述

      浏览器中F12后,定位到摘要位置也是不完整的。
    在这里插入图片描述

    2.2 解决方法

      首先在文章详情页中定位到摘要部分
    在这里插入图片描述

      点Preview后发现预览里面并没有论文相关信息,如下图
    在这里插入图片描述

      在Response中定位,发现是用Javascript写的,如下图
    在这里插入图片描述

      复制最外侧{}括号之间内容,用JSON解析器解析一下,确实是完整的论文信息,如下图
    在这里插入图片描述

      从Headers中找到访问相关的信息
    在这里插入图片描述

      再次上百度大法,找到方法来获取HTML中的JavaScript内容[68]^{[6-8]}。基本流程就是发送GET请求,用Beautifulsoup解析返回信息,然后用正则表达式来获取到json数据,最后将json数据转换为字典格式。

    # 请求头
    gheaders = {
        'Referer': 'https://ieeexplore.ieee.org/search/searchresult.jsp? \
        newsearch=true&queryText=support',
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:27.0) \
        Gecko/20100101 Firefox/27.0',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9, \
        image/avif,image/webp,image/apng,*/*;q=0.8,'
                  'application/signed-exchange;v=b3;q=0.9',
        'Accept-Encoding': 'gzip, deflate, br',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Connection': 'keep-alive'
    }
    # 请求链接
    url = 'https://ieeexplore.ieee.org/document/4537113'
    IEEE_response = requests.get(url=url, headers=gheaders)     # GET请求
    soup = BeautifulSoup(IEEE_response.text, 'lxml')            # 解析
    # 正则表达式 创建模式对象
    pattern = re.compile(r'xplGlobal.document.metadata=(.*?);', re.MULTILINE | re.DOTALL)
    script = soup.find("script", text=pattern)                  # 根据模式对象进行搜索
    res_dic = pattern.search(script.string).group(1)            # 配合search找到字典
    print(res_dic)
    json_data = json.loads(res_dic)                             # 将json格式数据转换为字典
    print(json_data['userInfo'])                                # 测试一下。。
    

    参考资料

    [1]IEEE 论文爬取

    [2]python系列之网络爬虫

    [3]selenium采用find_element_by方法识别页面元素

    [4]Python selenium有多个class值时如何定位

    [5]爬取ieee

    [6]如何获取在Python中的JavaScript内容

    [7]python 爬虫如何获取js里面的内容

    [8]python中的search的group(0),group(1)的方法

    展开全文
  • python爬虫——简单论文标题检索

    万次阅读 2016-09-18 16:24:44
    因此,学习用python写一个很简单的爬虫,完成对最新论文的概括或查找。对于计算机领域的最新论文,一般都可以在 http://arxiv.org/list/cs/recent 找到,因此,对此网页尝试简单爬虫。 本博客简要介绍简单爬虫快速获

    有趣的爬虫,独有的意义召唤着我去学习,去尝试。最近有感于每天对于论文的收集,感觉自己的收集速度赶不上论文的更新速度,同时对于自己想找到的论文的收集比较麻烦。因此,学习用python写一个很简单的爬虫,完成对最新论文的概括或查找。对于计算机领域的最新论文,一般都可以在 http://arxiv.org/list/cs/recent 找到,因此,对此网页尝试简单爬虫。 本博客简要介绍简单爬虫快速获取相关新论文标题和pdf。

    所需网页的抓取

    首先加载爬虫所需的模块,urlliburllib2是常见的打开url网页的模块,如urllib.urlopen(url[,data[,proxies]]),打开一个url,并返回一个文件对象
    我们这里使用urllib2模块,发送一个打开网页的请求,并使用urlopen打开网页,代码如下:

    import urllib2
    
    req = urllib2.Request('http://arxiv.org/list/cs/recent')
    response = urllib2.urlopen(req)
    the_page = response.read()
    
    print(the_page)

    输出得到的结果即为整个网页源代码:
    这里写图片描述

    信息的匹配与搜索

    抓取到所需要的网页后会发现,网页的源代码杂乱,这时需要在杂乱的代码中找到自己所需要的信息,将有用的信息输出。因此,信息的匹配与正则化的运用由此生出。例如,需要对所有的文章标题进行输出,那么需要找到每个论文标题处的独有特征,正则化表达后表示出标题,将其全部输出。
    具体的正则化规则在其他人的博客中也有详细介绍,如:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html ,正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了。
    其匹配流程如下:
    这里写图片描述
    具体我们来看我们的例子,对于论文标题的表达,首先提取网页源代码中涉及每一篇最新论文的部分,如下(随机举例):

    <dt><a name="item18">[18]</a>&nbsp;  <span class="list-identifier"><a href="/abs/1609.04722" title="Abstract">arXiv:1609.04722</a> [<a href="/pdf/1609.04722" title="Download PDF">pdf</a>, <a href="/ps/1609.04722" title="Download PostScript">ps</a>, <a href="/format/1609.04722" title="Other formats">other</a>]</span></dt>
    <dd>
    <div class="meta">
    <div class="list-title mathjax">
    <span class="descriptor">Title:</span> Concordance and the Smallest Covering Set of Preference Orderings
    </div>
    <div class="list-authors">
    <span class="descriptor">Authors:</span> 
    <a href="/find/cs/1/au:+Lin_Z/0/1/0/all/0/1">Zhiwei Lin</a>, 
    <a href="/find/cs/1/au:+Wang_H/0/1/0/all/0/1">Hui Wang</a>, 
    <a href="/find/cs/1/au:+Elzinga_C/0/1/0/all/0/1">Cees H. Elzinga</a>
    </div>
    <div class="list-comments">
    <span class="descriptor">Comments:</span> 21 pages
    </div>
    <div class="list-subjects">
    <span class="descriptor">Subjects:</span> <span class="primary-subject">Artificial Intelligence (cs.AI)</span>; Data Structures and Algorithms (cs.DS); Computer Science and Game Theory (cs.GT); Information Theory (cs.IT)

    这里,下面句子即为该论文的title部分描述:

    <span class="descriptor">Title:</span> Concordance and the Smallest Covering Set of Preference Orderings
    </div>

    我们想要的结果,即为<span class="descriptor">Title:</span>之后和</div>之前的部分文字进行输出,对应于正则表达式规则,可以表达如下:

    import re #加载正则化匹配模块
    myItems = re.findall('<span class="descriptor">Title:</span>(.*?)</div>',page,re.S)

    这就是正则化的方法,类似该方法可以进行所需信息的匹配的查找。
    同时,python中函数功能的使用,可以使得代码更简洁,爬虫的功能添加也更加方便,python中的函数主要用def表示,如上文中的论文标题输出函数可以写成如下形式,输出即为所有该网页新论文的标题。

    def paper_title(page):
        myItems = re.findall('<span class="descriptor">Title:</span>(.*?)</div>',page,re.S)
    
        for item in myItems:
            print item

    简单实例

    这里我们完成论文的标题输出部分的爬虫,代码如下:

    import urllib2
    import re
    req = urllib2.Request('http://arxiv.org/list/cs/recent')
    response = urllib2.urlopen(req)
    the_page = response.read()
    
    def paper_title(page):
        myItems = re.findall('<span class="descriptor">Title:</span>(.*?)</div>',page,re.S)
    
        for item in myItems:
            print item
    
    paper_title(the_page)

    输入结果如下:
    这里写图片描述

    展开全文
  • 虽然不让的也能通过手段出来,但那就跟考试作弊一样了。 爬虫分类 通用爬虫:抓取一整张页面数据 聚焦爬虫:拿通用爬虫来的数据 抓取页面中指定的局部内容 增量式爬虫:只抓取网站中更新出来的内容 爬虫中常用...
  • 假期,老师给布置了 Python 爬虫中国知网论文的任务,目前实现了登录和搜索功能,先写一下遇到的坑和解决办法吧。 Python 爬虫中国知网论文过程中遇到的坑及解决办法(上)一. selenium 模块1. 浏览器驱动程序下载...
  • 接上一篇,Python爬虫——爬取知网论文数据(一) 上一篇谈到了如何爬取知网的论文标题和论文作者,这一篇讲一下如何爬取多页,以及如何爬取作者的详细信息。 1. 换页 同样的,我们在搜索结果页按下F12查看网页源...
  • title = i.find('h2').text # 到标题 print(title) f.write("题目:"+title.strip()) f.write('\n') #获取文章跳转链接 half_link = i.find('h2').find('span').find('a')['href'] wholelink = '...
  • Python爬虫根据关键词爬取知网论文摘要并保存到数据库中 由于实验室需要一些语料做研究,语料要求是知网上的论文摘要,但是目前最新版的知网起来有些麻烦,所以我利用的是知网的另外一个搜索接口
  • 对于很多从事大数据方向研发的研究生来说,通过爬虫(通常会采用Python编写)来获取实验数据是比较常见的方式,但是具体选择哪些网站作为数据爬取的对象,需要根据自身的研究方向来定,同时也取决于自身的知识结构...
  • python爬虫原理

    2021-01-06 20:47:06
    所谓爬虫,就是从网页上自动化、批量化地爬取自己想要的东西,例如下载论文,搜索招聘信息等。我们常见的百度搜索就是一个大爬虫。 这篇文章的前几个章节详细地讲解了什么是爬虫:...
  • 这是一份同学的爬虫的毕业论文,完整的。需要的赶紧拿走
  • 只能标题,部分摘要(链接页显示啥就是啥),也可以年份,来源,作者(代码中我注释掉了) import requests from bs4 import BeautifulSoup from urllib.request import quote #"百度学术是用utf-8编码的,因而...
  • 最近,导师交给了我们一个任务,让我们核查各个学校提交上来的资料是否正确,我分到的任务就是核查所提交上来的已被收录的论文是否能在相应的期刊搜索的到,以及其他相关信息是否正确。于是,我就想着使用python爬虫...
  • 目的:爬取毕设所需的数据源,包括论文标题、论文作者以及作者的详细信息。 所需第三方库: Requests库 Selenium库 BeautifulSoup库 首先,我们打开知网首页:https://www.cnki.net/ 我们必须先输入关键词,再...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 353
精华内容 141
关键字:

python爬论文

python 订阅