对象上个历史课老师竟然让用jieba进行分词然后找关系。学历史的文科生哎,老师就一个人装逼。嗯——,于是自己写了这段代码。让她们用。初来乍到,不是很好,凑活能用。
首先导入用到的库:
jieba库安装网上一大堆。自行解决吧(pip不是很好,尝试官网下载,或者清华的源)
import requests
from bs4 import BeautifulSoup
import jieba
# jieba.set_dictionary("./dict.txt")
# jieba.initialize()
import re
这是装逼获取ip地址的:
def get_ip():
try:
header = {
'User-Agent': '这里要填写'
}
responds = requests.get('http://ip111.cn/', headers=header)
soup = BeautifulSoup(responds.content.decode(), 'lxml')
ip = soup.find('div', class_='card-body').text.replace('n', '').replace('这是您访问国内网站所使用的IP', '').replace(' ', '')
pattern = re.compile(r'[^u4e00-u9fa5]')
ip = re.sub('[u4e00-u9fa5]', '', ip)
responds1 = requests.get(f'https://www.ip138.com/iplookup.asp?ip={ip}&action=2', headers=header)
soup1 = BeautifulSoup(responds1.content.decode('gb2312'), 'lxml')
soup1 =str(soup1)
soup1 = re.findall('ASN归属地":".*?"', soup1)[0].replace('ASN归属地":"', '').replace('"', '')
print(f'欢迎来自{soup1}的朋友!')
except:
pass
实际效果:
欢迎来自**********的朋友!
接下来是分词:
def cut():
global list1
str1=''
for i in range(len(list1)):
str1=str1+list1[i]+' '
print(str1)
print('--------------------------- 分词结束!---------------------------------')
def input_user():
global list1
global choose_user
sstr="end"
text_input=""
print('# 输入文本 单击回车后输入end再次单击回车 这样用来表示输入结束 #')
print('请输入:')
for line in iter(input,sstr):
text_input+= line+"n"
text=re.sub(r'[W]','',text_input).replace('n','')
list1=list(jieba.cut(text,cut_all=False))
choose_user=input('请选择操作(输入对应数字点击回车):1.分词 2.词频统计 3.分词加词频统计 4.退出n请输入:')
最后是词频统计,除去相同的词,去掉单个的字进行统计:
def frequency():
list2=[]
for w in range(5):
for i in list1:
try:
a = i[1]
except:
list1.remove(i)
for s in list1:
if s not in list2:
list2.append(s)
from collections import Counter
wordcount = Counter(list1)
finall_list = list(wordcount.most_common(len(list2)))
for e in finall_list:
print(str(e).replace('(', '').replace(')', '').replace(',', ':').replace("'", ''))
print('--------------------------- 词频统计结束!---------------------------------')
完整代码,注意浏览器代理要自己填!!!!
import requests
from bs4 import BeautifulSoup
import jieba
# jieba.set_dictionary("./dict.txt")
# jieba.initialize()
import re
list1=[]
choose_user=4
def get_ip():
try:
header = {
'User-Agent': '这里要填写'
}
responds = requests.get('http://ip111.cn/', headers=header)
soup = BeautifulSoup(responds.content.decode(), 'lxml')
ip = soup.find('div', class_='card-body').text.replace('n', '').replace('这是您访问国内网站所使用的IP', '').replace(' ', '')
pattern = re.compile(r'[^u4e00-u9fa5]')
ip = re.sub('[u4e00-u9fa5]', '', ip)
responds1 = requests.get(f'https://www.ip138.com/iplookup.asp?ip={ip}&action=2', headers=header)
soup1 = BeautifulSoup(responds1.content.decode('gb2312'), 'lxml')
soup1 =str(soup1)
soup1 = re.findall('ASN归属地":".*?"', soup1)[0].replace('ASN归属地":"', '').replace('"', '')
print(f'欢迎来自{soup1}的朋友!')
except:
pass
def cut():
global list1
str1=''
for i in range(len(list1)):
str1=str1+list1[i]+' '
print(str1)
print('--------------------------- 分词结束!---------------------------------')
def frequency():
list2=[]
for w in range(5):
for i in list1:
try:
a = i[1]
except:
list1.remove(i)
for s in list1:
if s not in list2:
list2.append(s)
from collections import Counter
wordcount = Counter(list1)
finall_list = list(wordcount.most_common(len(list2)))
for e in finall_list:
print(str(e).replace('(', '').replace(')', '').replace(',', ':').replace("'", ''))
print('--------------------------- 词频统计结束!---------------------------------')
def input_user():
global list1
global choose_user
sstr="end"
text_input=""
print('# 输入文本 单击回车后输入end再次单击回车 这样用来表示输入结束 #')
print('请输入:')
for line in iter(input,sstr):
text_input+= line+"n"
text=re.sub(r'[W]','',text_input).replace('n','')
list1=list(jieba.cut(text,cut_all=False))
choose_user=input('请选择操作(输入对应数字点击回车):1.分词 2.词频统计 3.分词加词频统计 4.退出n请输入:')
get_ip()
input_user()
while choose_user!='4':
if choose_user=='1':
cut()
elif choose_user=='2':
frequency()
elif choose_user=='3':
cut()
frequency()
else:
print('输入错误,请重新输入')
choose_user=input('请选择操作(输入对应数字点击回车):1.分词 2.词频统计 3.分词加词频统计 4.退出n请输入:')
print('感谢使用!')
input('Press Enter to exit...')



