python - 使用 Python 计算网站中词频的代码未输出正确的频率
问题描述
我想计算特定网站中单词列表的频率。但是,该代码不会返回手动“控制 F”命令所返回的确切字数。我究竟做错了什么?
这是我的代码:
import pandas as pd
from bs4 import BeautifulSoup
import requests
from selenium import webdriver
import re
url='https://www.gov.uk/government/publications/specialist-quality-mark-tender-2016'
fr=[]
wanted = ['tender','2020','date']
for word in wanted:
a=requests.get(url).text.count(word)
dic={'phrase':word,
'frequency':a,
}
fr.append(dic)
print('Frequency of',word, 'is:',a)
data=pd.DataFrame(fr)
解决方案
当我在“Tender”这个词上尝试你的代码时,a=requests.get(url).text.count(word)
返回的结果比 ctrl + F 多得多,这很奇怪,因为我希望返回更少( text.count 区分大小写,HTML 有时会将元素分成多行等等)。但是通过打印变量“a”并浏览它,您会注意到页面上没有显示的元素,并且标签之间还有很多“Tender”。我建议您使用 BeautifulSoup 或找到一些方法来避免通过不可见的文本。
顺便说一句,小事,你可以把 'requests.get(url).text
作为一个变量放在循环之外,这样你就不必在每次迭代时都发送请求。
推荐阅读
- php - php artisan 命令在 ubuntu 中不起作用
- c - 如何在 gtk + 3 中创建背景图像?
- python - python3.8-venv 不适用于 python3.8 -m venv env
- graphql - 无法在类型“Query”graphql/template-strings 上查询字段“allDevArticles”以获取 dev.to 文章
- docker - Docker 一直说必须是超级用户
- java - Jmeter绕过在用户定义的变量中设置的环境变量并在测试中运行其他环境
- c# - 如何在 .net core web api 3.1 中创建 Customtom 授权属性?
- linux-kernel - 当我们在 yocto build 中添加 networkmanager 时,会出现冲突的问题
- kotlin - 使用 kotlin 和 kapt 读取注释处理器中的资源
- django - 带有 if 的 context_processor