[python][project][爬虫] 论文抓取
来源:互联网 发布:360手机电池修复软件 编辑:程序博客网 时间:2024/06/04 18:54
本文总结了在特定网页上抓取论文的方法。
首先,需求是在以下四个期刊上抓取所有论文列表,找出含有关键字的论文。
期刊1:https://www.osapublishing.org/ol/issue.cfm
期刊2:https://www.osapublishing.org/oe/issue.cfm
期刊3:http://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=22
期刊4:http://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=50
项目的实现,采用QT Designer+python来实现,将抓取到的论文列表放到listWidget中,并将含有关键字的item改变颜色,双击item可以查看详细信息,并提供论文下载链接。
QT Designer的设计如下:
【主页面】和【双击item之后】
打开网页可以观察到期刊1和2是一个类型,期刊3和4是一个类型。
对于第一种类型,抓取方法如下:
# 设置headersheaders = {'User-agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0'}soup = BeautifulSoup(requests.get(url,headers=headers).content, 'html.parser')#抓取期刊信息letter_info = soup.find('div', attrs={'class': 'content-module journal-info'})# 期刊主要作者primary_editors = letter_info.find('p', attrs={'class': 'primary-editors'}).get_text().strip()# 期刊其他信息letter_others_info = letter_info.find('h2').get_text().strip().replace('\n', '..')letter_others_info = ''.join(letter_others_info.split())#论文提取letter_list= soup.find_all('div', attrs={'class': 'media-twbs-body'})for letter in letter_list: #将论文存入字典中,key为论文题目,value为作者、html链接、pdf链接组成的list letters_list[letter.find('p', attrs={'class': 'article-title'}).get_text()]=[letter.find('p', attrs={'class': 'article-authors'}).get_text(),'https://www.osapublishing.org'+letter.find('a', attrs={'id': 'link-full'})['href'],'https://www.osapublishing.org'+letter.find('a', attrs={'id': 'link-pdf'})['href']]
对于第二种类型,抓取方法同理,只是需要找到代码的规律:
headers = {'User-agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0'}soup = BeautifulSoup(requests.get(url, headers=headers).content, 'html.parser')letters=soup.find('ul',attrs={'class': 'results'}).find_all('li')for letter in letters: authors='' for author in letter.find_all('a',attrs={'class': 'authorPreferredName prefNameLink'}): authors=authors+author.get_text()+';' authors=''.join(authors.split()) title=letter.find('a',attrs={'class': 'art-abs-url'}).get_text().replace('\n','') letters_list[title]=[authors,'http://ieeexplore.ieee.org'+letter.find('img',attrs={'alt': 'HTML icon'}).parent['href'],'http://ieeexplore.ieee.org'+letter.find('img',attrs={'alt': 'PDF file icon'}).parent['href']]
抓取到的数据,放置在listWidget中,并匹配关键字,对含有关键字的item标记为红色:
#获取关键字的内容filter=str(self.plainTextEdit.toPlainText())for key in letters_list:#将字典的key设置为item,添加到listWidgt中 self.listWidget.addItem(key) if filter in key: #判断key值是否包含关键字,并设置颜色 self.listWidget.item(self.listWidget.count()-1).setTextColor(QColor(225, 0, 0))
另外点击查看html,pdf可以查看原文链接和下载pdf:
#打开浏览器webbrowser.open(url, new=0, autoraise=True)
阅读全文
0 0
- [python][project][爬虫] 论文抓取
- [python][project][爬虫] 时光网抓取信息
- python爬虫抓取图片
- Python爬虫抓取
- python 爬虫抓取奥数题
- python爬虫抓取-helloworld
- python 爬虫 基本抓取
- python网络爬虫抓取图片
- Python爬虫抓取网页图片
- python爬虫CSDN文章抓取
- Python爬虫抓取csdn博客
- python 爬虫抓取心得分享
- 使用python爬虫抓取学术论文
- Python抓取段子的爬虫
- python 网络爬虫抓取图片
- python网络爬虫抓取图片
- python爬虫抓取LeetCode题目
- Python爬虫抓取动态数据
- Android eclipse混淆代码
- 如何在Linux操作系统下搭建配置流媒体服务器系统
- 简单的抽奖随机策略
- protobuf协议原理与应用
- SpringMVC之DispatcherServlet源码关键部分
- [python][project][爬虫] 论文抓取
- 使用URLSession
- Android 集成百度升级SDK
- LeetCode Algorithms 32. Longest Valid Parentheses 题解
- kaggle初探——如何在 Kaggle 首战中进入前 10%
- JavaBean中通过自省机制拿到对应的属性和方法,以及BeanUtils工具类中的拷贝属性方法
- POJ 2155 Matrix (二维线段树)
- 将JavaBean用DOM4J转成xml格式的字符串,用DOM4J解析xml格式的字符串
- 浅拷贝、深拷贝、浅赋值、深赋值