NLP 获取相似词 - 2.提取相似词[爬虫应用]
视频链接:https://www.bilibili.com/video/av78674056
接上节。 NLP 获取相似词 - 1.爬取百度搜索结果 https://blog.csdn.net/GreatXiang888/article/details/103455140
已经得到了html源代码的内容了,用方法得到对应的数据即可。
我所了解到的提取方法有:
1,正则表达式。 不熟练,写起来不方便(X)
2,BeautifulSoup。 性能不高 (X)
3,xpath定位。 (√)
xpath的获取,两种方法:
1,自己学xpath的语法
2,在开发者模式下,右键,复制xpath格式。如下:
chrome浏览器中,
第一步,在目标位置右键,选择“检查”。
第二步,在elements对应位置,右键,copy,copy Xpah.
细节需要你自己摸索。(B站不让放一些爬虫视频,审稿脑子不好使。。)
完整代码:
import requests
import urllib.requestfrom lxml import etree#通过百度搜索,得到相关词语(爬虫得到结果)def getHTML(keyword):#通过关键词keyword,得到百度搜索后的html结果headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Encoding': 'gzip, deflate, compress','Accept-Language': 'en-us;q=0.5,en;q=0.3','Cache-Control': 'max-age=0','Connection': 'keep-alive','User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'} #定义头文件,伪装成浏览器#编码关键词data1 = {'wd': keyword}data1_encode = urllib.parse.urlencode(data1)url = 'https://www.baidu.com/s?'+data1_encodex = requests.get(url,headers=headers)data = x.content# 将<class 'bytes'>转换为<class 'str'>data = data.decode("utf-8")return datadef processData(data):#处理data,得到所需结果res = []html = etree.HTML(data)html_data = html.xpath('//*[@id="con-ar"]/div[1]/div/div/div[2]/div') #大的定位tmp = [] #用来存相关词的elementfor item in html_data:#一个item里面包括4个(一行)four = item.xpath('./div')#每一个里面又包含3个div,第2个是我们要的。分别是[图片,名词,描述]for one in four:tmp.append(one.xpath('./div[2]')[0])res = [x.xpath('./a/text()')[0] for x in tmp]return resdef getRelatedWords(keyword):#封装一下。直接搜索关键词,得出相关词data = getHTML(keyword)res = processData(data)return resif __name__ == "__main__1":# 测试,搜索关键词,保存到文件data = getHTML(keyword="氨基酸")with open("test1.html","w",encoding="utf-8") as f:f.write(data)print("finish")if __name__ == "__main__2":# 测试,从文件中读取,并解析with open("test1.html", "r", encoding="utf-8") as f:x = f.read()res = processData(x)if __name__ == "__main__":print("\n")keyword = "天冬氨酸"print("搜索关键词为:",keyword)res = getRelatedWords(keyword=keyword)print("相关词为:",res)print("\n")
实验效果:
Perfect,太佩服我自己了,哈哈。
收工。
(不三连一下吗?
相关资料:
Python中BeautifulSoup库的用法 https://blog.csdn.net/qq_21933615/article/details/81171951
python爬虫之xpath的基本使用 https://www.cnblogs.com/lei0213/p/7506130.html
简单比较 BeautifulSoup 和 Xpath 的性能 https://blog.csdn.net/randomparty/article/details/80144700
后续
通过cnki助手,扩充相关词汇。
http://define.cnki.net/WebForms/WebSearchTable.aspx?pageNumber=1&searchword=%E5%A4%A9%E5%86%AC%E6%B0%A8%E9%85%B8
完整代码:
import requests
from urllib.parse import urlencode
from lxml import etree
import re# 通过cnki助手,获取相关词汇def getHTML(keyword):#通过关键词keyword,得到cnki助手搜索后的html结果params1 = {"pageNumber": 1,'searchword': keyword}url = "http://define.cnki.net/WebForms/WebSearchTable.aspx?" + urlencode(params1)raw_data = requests.get(url).textreturn raw_datadef processData(data):#处理data,得到所需结果res = []html = etree.HTML(data)html_data = html.xpath('//*[@id="lbSTable"]/table[1]/tr') #大的定位tmp = [] #用来存相关词的elementres = [] #返回的结果for item in html_data[3:-2]:#一个item里面包括3个(一行)three = item.xpath('./td')#每一个里面又包含3个tdfor one in three:tmp.append(one.xpath('./a')[0])try:res.append(one.xpath('./a/text()')[0])except:pass#去掉多余字符res = [re.findall("\[(.*?)\]", x)[0] for x in res]return resif __name__ == "__main__":keyword = "电子显微镜"raw_data = getHTML(keyword)res = processData(raw_data)print(res)
NLP 获取相似词 - 2.提取相似词[爬虫应用]相关推荐
- NLP 获取相似词 - 1.爬取百度搜索结果
视频链接:https://www.bilibili.com/video/av78674056 一,前言 NLP实际项目要用到,给定一个词,找出它的同义词.相似词.拓展词等. 我思考了下,有: 1,同义 ...
- 数据分析实例-获取某宝评论数据做词云图可视化
获取数据 首先要通过抓包分析网站的数据接口是什么,再构造请求头,发送请求,解析数据,最后保存数据.本项目以某宝上的一个商品的评论数据为例进行获取. 爬虫主代码: import requests imp ...
- 基于 python获取教育新闻进行分词关键词词共现分析 知识图谱 (附代码+报告)
本文着眼于对疫情期间教育领域新闻的分析,基于 python 语言,利用爬虫获取教育领域的最新新闻,并将其内容进行分词,抓取关键词.在此基础上,根据关键词进行共现分析,并利用 Gephi 软件绘制主题知 ...
- 自然语言处理NLP(3)——神经网络语言模型、词向量
在上一部分中,我们了解到了统计语言模型,n-gram模型以及语料库的基本知识: 自然语言处理NLP(2)--统计语言模型.语料库 在这一部分中,我们将在此基础上介绍神经网络语言模型以及词向量的相关知识 ...
- 使用transformers框架导入bert模型提取中文词向量
导言 在笔者的上一篇文章大白话讲懂word2vec原理和如何使用中提到了如何将词语转变成计算机能够识别的语言,即将文本数据转换成计算机能够运算的数字或者向量这个概念,并详细阐述了word2vec这个模 ...
- 获取Word2vec训练得到的所有词与词向量
尊敬的读者您好:笔者很高兴自己的文章能被阅读,但原创与编辑均不易,所以转载请必须注明本文出处并附上本文地址超链接以及博主博客地址:https://blog.csdn.net/vensmallzeng. ...
- blog10 提取候选词的输入文本
2021SC@SDUSC 在上一博客中,参数text_obj代表了我们想要提取候选词的输入文档,这些定义在input_representation.py文件中的class InputTextObj中, ...
- 基于投影学习的负采样改进型上位词关系提取 (翻译学习使用)
原标题:Negative Sampling Improves Hypernymy ExtractionBased on Projection Learning 原作者们(感谢国际友人):Dmitry ...
- java 对英文句子进行 分词、去除停用词、提取词干
下面 词干提取算法 用到的jar包 lucene-analyzers-smartcn-7.6.0.jar (包含 中英 词干提取) 百度网盘链接:https://pan.baidu.com/s/15D ...
最新文章
- 辅助模块加速收敛,精度大幅提升 移动端实时的NanoDet-Plus来了
- 网络无线AP信号走场测试软件(Ekahau 使用说明)
- mysql8用户管理
- php如何从mongo获取视频文件,使用mongodb对文件(图片、音频、视频)的存储、读取操作...
- linux虚拟文件系统(六)-文件关闭操作分析
- 萌新的Python练习菜鸟100例(八)输出 9*9 乘法口诀表
- Wannafly挑战赛14 F
- 深拷贝与浅拷贝、深复制与浅复制
- .net中Windows窗体间的数据交互
- Solr schema编写指导
- 软件盗版受害者解决方法
- 使用bat脚本创建快捷方式
- win11怎么进安全模式,win11进入安全模式的方法
- FrontEnd前端文件架构
- 集合 Collection
- python生成的excel无法打开-Python 解决中文写入Excel时抛异常的问题
- 一键分享到新浪微博、腾讯微博、搜狐微博、人人网、开心网、百度收藏等js代码大全...
- java在线编译网站
- 计算机运行慢 卡是什么原因是什么原因,电脑很卡是什么原因
- 幻影成像的搭建以及应用
热门文章
- 三菱协议转换网关WTGNet-MEL(三菱QFX5U)
- Android开发_Fragment
- 闲聊vue版本差异和开发中不太容易注意的点(基础篇)
- 基于jsp+servlet的旅游景点管理系统。
- 如何免费将PDF转换为Excel格式
- 李宏毅ML作业笔记4: RNN文本情感分类
- 4.2023计算机领域顶会(A类)以及ACL 2023自然语言处理(NLP)研究子方向领域汇总
- 哲学与科学思想一致性
- STM32L5单片机即将量产,Cortex-M33内核,更低功耗,更多安全!
- 施努卡:机器视觉系统作用是什么,原理是什么