学习笔记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

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

如有侵权,请联系 zhuanlan_guanli@qq.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏各种机器学习基础算法

EasyWeChat初体验

环境需求 PHP >= 5.5.9 openssl 拓展 fileinfo 拓展(素材管理模块需要用到) 安装 使用 composer(注意:他会自动检索该目录...

3167
来自专栏cloudskyme

虚拟化平台cloudstack(3)——安装(下)

登录时用户名和密码错误 默认账号密码 admin/password 管理节点安装好后,初始化数据库,完了使用admin和password登陆提示用户名密码错误...

3609
来自专栏Timhbw博客

小白搭建博客教程-购买虚拟主机并搭建(2)

2016-06-1011:03:08 发表评论 18℃热度 一键部署工具选择 系统选择 连接虚拟主机 开始一键部署 目录 上一回说道:小白搭建博客教程...

3326
来自专栏CDA数据分析师

Python部署手记:django, gunicorn, virtualenv, circus, nginx

手记,以免下次配置再入坑。有些细节未做详细描述,如果有问题,可以评论或私信我。 初次尝试搭python服务器,强撸python3,花样作死。过程中出现各种错误,...

2667
来自专栏猫哥学前班

8102 年的程序员不需要 Hosts 和 Fiddler

加入鹅厂之后,我发现团队都在用一款叫做 Whistle 的工具,起初我以为这只是一款类似 Fiddler/Charles 的普通货色。然鹅,发现下面这两种用法之...

1523
来自专栏大数据文摘

如何租到靠谱的房子?Scrapy爬虫帮你一网打尽各平台租房信息!

794
来自专栏陈本布衣

布衣之路(一):VMware虚拟机+CentOS系统安装

前言:布衣博主乃苦逼的Java程序猿一枚,虽然工作中不会涉及系统运维,但是开发的项目总还是要部署到服务器做一些负载均衡、系统兼容性测试、系统集成等等骚操作,而...

3086
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用ONLYOFFICE组织团队合作

ONLYOFFICE是一个免费的开源企业办公套件,旨在组织在线团队合作。它由三个独立的服务器组成:

1070
来自专栏Crossin的编程教室

【Python 第20课】 命令行常用命令

【Python 第20课】 命令行常用命令 今天茬开话题,说一下命令行(Windows下叫“命令提示符”,Mac下叫“终端”)里的常用命令。已经熟悉同学可略过。...

3125
来自专栏JadePeng的技术博客

ELK日志套件安装与使用

1、ELK介绍 ELK不是一款软件,而是elasticsearch+Logstash+kibana三款开源软件组合而成的日志收集处理套件,堪称神器。其中Logs...

2784

扫描关注云+社区