专栏首页利炳根的专栏学习笔记CB005:关键词、语料提取
原创

学习笔记CB005:关键词、语料提取

关键词提取。pynlpir库实现关键词提取。

# coding:utf-8
import sys
import importlib
importlib.reload(sys)
import pynlpir
pynlpir.open()
s = '怎么才能把电脑里的垃圾文件删除'
key_words = pynlpir.get_key_words(s, weighted=True)
for key_word in key_words:
    print(key_word[0], 't', key_word[1])
pynlpir.close()

百度接口:https://www.baidu.com/s?wd=机器学习 数据挖掘 信息检索

安装scrapy pip install scrapy。创建scrapy工程 scrapy startproject baidu_search。做抓取器,创建baidu_search/baidu_search/spiders/baidu_search.py文件。

# coding:utf-8
import sys
import importlib
importlib.reload(sys)
import scrapy
class BaiduSearchSpider(scrapy.Spider):
    name = "baidu_search"
    allowed_domains = ["baidu.com"]
    start_urls = [
            "https://www.baidu.com/s?wd=电脑 垃圾 文件 删除"
    ]
    def parse(self, response):
        filename = "result.html"
        with open(filename, 'wb') as f:
            f.write(response.body)

修改settings.py文件,ROBOTSTXT_OBEY = False,USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36' ,DOWNLOAD_TIMEOUT = 5 ,

进入baidu_search/baidu_search/目录,scrapy crawl baidu_search 。生成result.html,正确抓取网页。

语料提取。搜索结果只是索引。真正内容需进入链接。分析抓取结果,链接嵌在class=c-container Div h3 a标签 href属性。url添加到抓取队列抓取。提取正文,去掉标签,保存摘要。提取url时,提取标题和摘要,scrapy.Request meta传递到处理函数parse_url,抓取完成后能接到这两个值,提取content。完整数据:url、title、abstract、content。

# coding:utf-8
import sys
import importlib
importlib.reload(sys)
import scrapy
from scrapy.utils.markup import remove_tags
class BaiduSearchSpider(scrapy.Spider):
    name = "baidu_search"
    allowed_domains = ["baidu.com"]
    start_urls = [
            "https://www.baidu.com/s?wd=电脑 垃圾 文件 删除"
    ]
    def parse(self, response):
        # filename = "result.html"
        # with open(filename, 'wb') as f:
        #     f.write(response.body)
        hrefs = response.selector.xpath('//div[contains(@class, "c-container")]/h3/a/@href').extract()
        # for href in hrefs:
        #     print(href)
        #     yield scrapy.Request(href, callback=self.parse_url)
        containers = response.selector.xpath('//div[contains(@class, "c-container")]')
        for container in containers:
            href = container.xpath('h3/a/@href').extract()[0]
            title = remove_tags(container.xpath('h3/a').extract()[0])
            c_abstract = container.xpath('div/div/div[contains(@class, "c-abstract")]').extract()
            abstract = ""
            if len(c_abstract) > 0:
                abstract = remove_tags(c_abstract[0])
            request = scrapy.Request(href, callback=self.parse_url)
            request.meta['title'] = title
            request.meta['abstract'] = abstract
            yield request
    def parse_url(self, response):
        print(len(response.body))
        print("url:", response.url)
        print("title:", response.meta['title'])
        print("abstract:", response.meta['abstract'])
        content = remove_tags(response.selector.xpath('//body').extract()[0])
        print("content_len:", len(content))

参考资料:

《Python 自然语言处理》

http://www.shareditor.com/blogshow/?blogId=43

http://www.shareditor.com/blogshow?blogId=76

欢迎推荐上海机器学习工作机会,我的微信:qingxingfengzi

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 学习笔记CB001:NLTK库、语料库、词概率、双连词、词典

    聊天机器人知识主要是自然语言处理。包括语言分析和理解、语言生成、机器学习、人机对话、信息检索、信息传输与信息存储、文本分类、自动文摘、数学方法、语言资源、系统评...

    利炳根
  • 学习笔记DL001 : 数学符号、深度学习的概念

    深度学习是机器学习拉出的分支,它试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。本文主要介绍深度学习中的数学符号、数和数组。

    利炳根
  • 学习笔记CB010:递归神经网络、LSTM、自动抓取字幕

    递归神经网络(RNN),时间递归神经网络(recurrent neural network),结构递归神经网络(recursive neural network...

    利炳根
  • 它抢不走程序员的饭碗,但是会让一部分人瑟瑟发抖

    头部区域的文字是“Mood Tracker”, 然后是按钮“Happy”,“Sad',“Sleepy”,当我按其中一个按钮的时候,显示文本 “right row...

    蒙娜丽宁
  • 这个实验会做了,网络基础基本掌握一半了

    实验案例:在华为ensp软件上模拟实验,对本阶段的知识进行汇总实验 实验环境 如图所示,在win10下使用华为ensp软件上进行模拟实验

    不吃小白菜
  • 比特币或许不是最终的选择,但以特币会是你最好的选择

    比特币社群内战不休,今年8月传统比特币首次分裂,比特币现金因此诞生。比特币现金和比特币分裂是因为扩容问题摆不平,比特币现金的区块容量将一口气从1MB增至8MB。...

    企鹅号小编
  • 升级python到2.7

     眼看着python3 都出来了,vps上用的还是2.4的版本额,确实汗了一把。决定升级下python。

    py3study
  • python第二十三课——dict中的函数

    dic1 = {...} dic2 = {...} dic1.update(dic2) 1、update(dict):dic1调用update传入dic2...

    hankleo
  • 云计算市场的领导者和追随者的市场份额是多少?

    静一
  • 如何在Spring Boot中使用Cookies

    我写这篇文章的时间是2019年10月24日,首先祝大家节日快乐、身体健康、阖家幸福!

    字母哥博客

扫码关注云+社区

领取腾讯云代金券