用python爬取关键词并解释

Python025

用python爬取关键词并解释,第1张

Copyright © 1999-2020, CSDN.NET, All Rights Reserved

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)就可以了呀?

或者是还有什么需要匹配的东西,我看你后面好像要将结果连接起来,但是你匹配出来的都是关键字,直接连接的话,其实就是多个关键字的拼接了。