'''词汇检索百度返回值,并且计算PMI值的类'''
from bs4 import BeautifulSoup
import requests
import re
import pandas as pd
import time
import numpy as np class PMI():
def __init__(self):
self.url = 'https://www.baidu.com/s?wd='
#self.vocab = vocab def getHtml(self, url): # 只输入URL的主体部分,后面的参数用下面的字典附加上
'''注意这里必须加一个user-Agent,不然request发送请求是是以Python名义发送的,百度知道是Python发的就不给你返回需要的内容,伪装一下'''
try:
header = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36",
}
r = requests.get(url, headers=header)
r.raise_for_status()
r.encoding = 'utf-8'
return r.text
except:
print('爬取失败') def getNum(self, html): # 返回搜索的数字
soup = BeautifulSoup(html, 'html.parser')
content = soup.find_all('span', {
'class': 'nums_text'}) # 返回内容为 <span class="nums_text">百度为您找到相关结果约100,000,000个</span>
num = re.findall(r'[\d+,*]+', content[0].string)[
0] # 返回我们需要的搜索次数,内容是字符串型的数字.形如'100,000,000',数字内部包含逗号,下一步需要剔除掉逗号
return int(re.sub(r',', '', num)) # 将逗号替换掉,并强制转换为整数 def retrieveNum(self, vocab): # url主体和爬取网页的数量
url = self.url + vocab
html = self.getHtml(url)
num = self.getNum(html)
return num def getPmi(self,vocab):
n_p = 100000000
n_f = self.retrieveNum(vocab)
n_pf = self.retrieveNum(' '.join(['手机', vocab]))
# print(' '.join(['手机',word]))
# print(n_pf)
pmi = np.log10(n_pf / (n_p * n_f))
return pmi def getPmiList(self,words_list):#返回输入词列表的pmi值,以列表形式
pmi_list=[]
for i in words_list:
pmi_list.append(self.getPmi(i))
return pmi_list if __name__ =='__main__':
time_start = time.time()
url = 'https://www.baidu.com/s?wd='
#print(getHtml( url+'爸爸'))
# file=pd.DataFrame(columns=name,data=comm)
# file.to_csv('D:/machinelearning data/crawlerData/huaWei_P20_JD100-110.csv',index=False)
# num = retrieveNum('办法')
# print('搜索次数为:', num)
d=PMI()
a=['快递','傻子','总体','物流', '验机', '物流', '游戏']#['鸡楚', '留香王者', '系列', '性能', '电池', '电', '视频', '游戏','中华民族', '性价比', '王者', '卡', '天', '红米.', '老婆', '电池', '电', '王者', '时间', '游戏', '相机', '感触', '粉色', '妹妹']
pmi=d.getPmiList(a)
print('PMI:',list(pmi))
time_end = time.time()
print('耗时%s秒' % (time_end - time_start))

  

百度词汇检索,计算PMI值的更多相关文章

  1. geotrellis使用(十七)使用缓冲区分析的方式解决单瓦片计算边缘值问题

    Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 需求分析 实现方案 总结 一.前言        最 ...

  2. 百度地图API显示多个标注点并添加百度样式检索窗口

    原作者博客地址:http://blog.csdn.net/a497785609/article/details/24009031 在此基础上进行了修改: 1.添加闭包,将i传入内部 2.添加地图和卫星 ...

  3. treetable 前台 累计计算树值 提交后台

    treetable   累计计算树值 效果图 html  代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...

  4. ylbtech-Unitity-cs:计算阶乘值

    ylbtech-Unitity-cs:计算阶乘值 1.A,效果图返回顶部   1.B,源代码返回顶部 1.B.1, using System; namespace Functions { public ...

  5. C#计算时间差值

    /// <summary> /// 计算时间差值 /// </summary> /// <param name="DateTime1">< ...

  6. 利用Python计算π的值,并显示进度条

    利用Python计算π的值,并显示进度条  第一步:下载tqdm 第二步;编写代码 from math import * from tqdm import tqdm from time import ...

  7. excel计算时间差值

    excel计算时间差值 2018/10/1 10:59:00 减去 2018/9/21 1:05:13 获取 多少天. 如1.2天.这种. ==

  8. 使用不同的方法计算TF-IDF值

    摘要 这篇文章主要介绍了计算TF-IDF的不同方法实现,主要有三种方法: 用gensim库来计算tfidf值 用sklearn库来计算tfidf值 用python手动实现tfidf的计算 总结 之所以 ...

  9. C#实现像Git那样计算Hash值

    从Git Tip of the Week: Objects一文中得知,Git是这样计算提交内容的Hash值的: Hash算法用的是SHA1 计算前,会在内容前面添加"blob 内容长度\0& ...

随机推荐

  1. 马尔可夫毯(Markov Blanket)

    马尔可夫毯(Markov Blanket) 最近接触到马尔可夫毯(MarkovBlanket)这个概念,发现网上资料不多,通俗易懂的解释甚少,查了一些资料后,决定写一个总结. 提到马尔可夫毯,就会有一 ...

  2. sendkeys

    1)为了指定单一键盘字符,必须按字符本身的键.例如,为了表示字母 A,可以用 "A" 作为 string.为了表示多个字符,就必须在字符后面直接加上另一个字符.例如,要表示 A.B ...

  3. 14 ConfigParse模块

    1.ConfigParse模块的基本概念 此模块用于生成和修改常见配置文档. ConfigParser 是用来读取配置文件的包. 配置文件的格式如下:中括号“[ ]”内包含的为section.sect ...

  4. SQL语言类别

    SQL语言主要分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL. DQL (data query language) DML(data manipulati ...

  5. UGUI Canvas

    Render Mode Screen Space - Overlay 在此模式下不会参照到Camera,UI直接显示在任何对象之上 1.Pixel Perfect:可以使图像更清晰,但是有额外的性能开 ...

  6. 迷你MVVM框架 avalonjs 学习教程10、样式操作

    一般情况下我们通过设置类名就可以改变元素的样式,但涉及到动画部分,就一定需要设置内联样式了,因此有了ms-css.*ms-css*的用法为ms-css-样式名="样式值", 如ms ...

  7. 实现溢出文本eclipsis的解决

    实现溢出文本eclipsis的解决:overflow:hidden;text-overflow:ellipsis; white-space:nowrap; 如:<a href="&qu ...

  8. Error: Cannot find a valid baseurl for repo: epel

    修改一下/etc/yum.repos.d/epel.repo文件, enable=1改为enable=0

  9. MySql ERROR 1045 (28000): Access denied 错误

    [MySql ERROR 1045 (28000): Access denied 错误] 即登陆错误,使用MySql登陆时,需使正确的username/passwd.通过 -u -p 参数即可. My ...

  10. PIE结对项目编程

    一.题目描述 构造程序并测试,分别是:     1.不能触发Fault.     2.触发Fault,但是不能触发Error.     3.触发Error,但是不能产生Failure. 二.结对对象 ...