python
打开APP
小羊努力搞代码
关注
学习日志:Python 实现网络爬虫——提取关键字 原创
2022-06-19 13:02:38
小羊努力搞代码
码龄174天
关注
编写一段Python代码,向百度提交查询关键词“桃花源记”,抓取百度的查询结果,要求有文字、链接,可以在浏览器中打开抓取的链接,或者调用浏览器打开抓取的链接。
红框内是根据网站信息需要更改的内容。57031baa3a394395be479ad89f1ff15e.png
附上完整代码:
import json
import requests
from lxml import etree
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/88.0.4324.104 Safari/537.36"
}
response = requests.get('https://www.baidu.com/s?wd=桃花源记&lm=0', headers=headers)
r = response.text
html = etree.HTML(r, etree.HTMLParser())
r1 = html.xpath('//h3')
r2 = html.xpath('//*[@class="content-right_8Zs40"]')
r3 = html.xpath('//*[@class="c-row source_1Vdff OP_LOG_LINK c-gap-top-xsmall"]/a/@href')
for i in range(4):
r11 = r1[i].xpath('string(.)')
r22 = r2[i].xpath('string(.)')
r33 = r3[i]
with open('桃花源记.txt', 'a', encoding='utf-8') as c:
c.write(json.dumps(r11,ensure_ascii=False) + '\n')
c.write(json.dumps(r22, ensure_ascii=False) + '\n')
c.write(json.dumps(r33, ensure_ascii=False) + '\n')
print(r11, end='\n')
print('------------------------')
print(r22, end='\n')
print(r33)
关键词指的是原始文档的和核心信息,关键词提取在文本聚类、分类、自动摘要等领域中有着重要的作用。
针对一篇语段,在不加人工干预的情况下提取出其关键词
无监督学习——基于词频
思路1:按照词频高低进行提取
思路2:按照词条在文档中的重要性进行提取
IF-IDF是信息检索中最常用的一种文本关键信息表示法,其基本的思想是如果某个词在一篇文档中出现的频率高,并且在语料库中其他文档中很少出现,则认为这个词具有很好的类别区分能力。
TF:Term Frequency,衡量一个term在文档中出现得有多频繁。平均而言出现越频繁的词,其重要性可能就越高。考虑到文章长度的差异,需要对词频做标准化:
IDF:Inverse Document Frequency,逆文档概率,用于模拟在该语料的实际使用环境中,目标term的重要性。
TF-IDF:TF*IDF
优点:
(1)jieba
(2)sklearn
(3)gensim
前面介绍的TF-IDF属于无监督中基于词频的算法,TextRank算法是基于图形的算法。
TextRank算法的思想来源于PageRank算法:
和基于词频的算法相比,TextRank进一步考虑了文档内词条间的语义关系。
参考资料:
Python数据分析--玩转文本挖掘
你好, 那个r'.*?('+ lste +').*?‘ 会吧你这个关键字前面和后面的文字都匹配了,所以当你的那个关键字多次出现的时候,就会报那个重复出现的错了。你直接
hh = re.findall(lste, gg)就可以了呀?
或者是还有什么需要匹配的东西,我看你后面好像要将结果连接起来,但是你匹配出来的都是关键字,直接连接的话,其实就是多个关键字的拼接了。