其他
你知道MDPI期刊的热门题目吗?
本文作者:崔赵雯,中南财经政法大学金融学院
本文编辑:石 艳
技术总编:张馨月
爬虫俱乐部云端课程
1import requests
2from lxml import etree
3import pandas as pd
4import re
5
6all_title = []
7for p in range(1,9718):
8 url = "https://www.mdpi.com/search?sort=pubdate&page_no=%s&page_count=10&year_from=2010&year_to=2020&countries=CHINA&view=default"%p # 每页标题的链接
9 headers = {
10 "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36"
11 }
12 html = requests.get(url, headers = headers)
13 tree = etree.HTML(html.text)
14 divs = tree.xpath('//div[@class="jscroll"]/div')
15 for div in divs:
16 title_xpath = ".//a[@class='title-link']//text()"
17 title_list = "".join(div.xpath(title_xpath))
18 print(title_list)
19 if len(title_list) == 0: # 当页面没有要抓取的信息时,跳出循环
20 break
21 file = r"/Users/cc/Desktop/cc的推文/mdpi/标题爬取.csv"
22 with open(file, "a") as f :
23 f.write('''"%s"\n''' % (title_list))
24 print("已抓取第%s页" %p)
25print("抓取完毕!正在导出!")
执行此程序后,我们可以得到一个名为“标题爬取”的csv文件,部分内容展示如下:
将标题爬取下来以后,为了更加直观的让大家看到近年来发表在MDPI上的热门话题,我们将这些标题制作成了词云图,程序如下: 1import nltk
2from nltk import word_tokenize
3from wordcloud import WordCloud, STOPWORDS
4from nltk import FreqDist
5import re
6import collections # 词频统计库
7import matplotlib.pyplot as plt
8from PIL import Image
9import numpy as np
10
11#将csv文件读入Python中
12with open (r'/Users/cc/Desktop/cc的推文/mdpi/标题爬取.csv','r',encoding="utf-8") as f:
13 title = f.read()
14
15#进行分词、去除停用词以及去除标点符号
16stopwords=set(STOPWORDS)
17with open(r'/Users/cc/Desktop/cc的推文/mdpi/停用词.txt',encoding='UTF-8') as f:
18 stop_words=[i.strip() for i in f.readlines()]
19 for word in stop_words:
20 stopwords.add(word)
21title = nltk.sent_tokenize(str(title))
22filter_text = re.sub(r'[^a-zA-Z0-9\s]','',string= str(title))
23filter_text = [word for word in filter_text.split(' ') if word not in stopwords ]
24
25#词频统计
26word_counts = collections.Counter(filter_text) # 对分词做词频统计
27
28#用WordCloud来制作词云图
29f = open(u'/Users/cc/Desktop/cc的推文/mdpi/标题爬取.csv','r',encoding='utf-8').read()
30#读取图片
31bj_pic = np.array(Image.open(r"/Users/cc/Desktop/cc的推文/mdpi/pic.png"))
32#生成一个词云对象
33wordcloud = WordCloud(background_color='white',width=1500,height=960,margin=10,stopwords=stopwords,mask = bj_pic,scale=20).generate(f) #生成词云
34# 绘制图片
35plt.imshow(wordcloud)
36# 消除坐标轴
37plt.axis("off")
38# 展示图片
39plt.show()
40# 保存图片
41wordcloud.to_file('titlecloud.png')
结果如下:以上就是今天的全部内容啦,各位小主别忘了点个赞呀,加个关注咯,转载、打赏都可以呦~
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!往期推文推荐文件合并你不行,mergemany来帮宁
分组进行描述性统计的小技巧 --astx命令介绍
新年快乐|爬虫俱乐部2020年度总结Python中实现Excel的重复值提取fileexists:告诉你“我”存在吗?工作中一切困难的解决途径——motivatedolly
【爬虫实战】喜茶的门店都开在了哪里?
import delimited | 再也不用担心读入网页源代码“乱七芭蕉”了如何简洁地列出指定属性的变量?ds命令来了!
如何在Python中进行描述性统计分析?
分析师和他们的雇主重视与管理层接触吗?——分析师参与盈余电话会议的研究
繁忙的董事与公司业绩:来自并购的证据使用Python接口读取CSMAR数据列表生成式|让你的代码简洁又美观Stata中变量观测值的亲密伙伴——levelsof命令爬虫俱乐部开发的命令更新及常见问题说明
Seminar | 道德培训真的有用吗?
网络爬虫入门之requests 库的基本使用——以亚马逊图书界面为例reduce()函数和filter()函数闪亮登场关于我们微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。投稿邮箱:statatraining@163.com投稿要求:1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。