机器人--寒暄库(数据准备2)

上次说了机器人的寒暄库需要基于seq2seq模型来做训练,训练的前提是我们准备好了足够的数据。

这次来说一下数据准备工作。

数据的来源一般分为内部已有的积累数据,另一个就是互联网数据,比如百度。。。百度几乎就是互联网的一个镜像。内部积累的文本数据有限,远不如网络数据丰富。so我们就要考虑怎么获取到网络文本数据了,可能你已经猜到了,那就是爬虫。

python的scrapy是一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据

安装

yum install libffi-devel

yum install openssl-devel

pip install scrapy

中文教程:http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html

创建项目

scrapy startproject myrobot_search

项目结构:

settings.py是爬虫的配置文件

USER_AGENT是ua,也就是发http请求时指明我是谁,因为我们的目的不纯,所以我们伪造成浏览器,改成

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‘

ROBOTSTXT_OBEY表示是否遵守robots协议(被封禁的不抓取),因为我们的目的不纯,所以我们不遵守,改成

ROBOTSTXT_OBEY = False

DOWNLOAD_DELAY表示对同一个站点抓取延迟,也就是抓一个,歇一会,为了对方站点冲击,我们调整为1,也就是一秒抓一个CONCURRENT_REQUESTS_PER_DOMAIN表示对同一个站点并发有多少个线程抓取,同样道理,我们也调整为1

CONCURRENT_REQUESTS_PER_IP同理也调整为1

编写项目

新建一个爬虫文件RobotSearchSpider.py,如下:

爬虫命名为 myrobot_search.

允许爬取的域名 baidu.com

爬虫初始爬取的种子链接:https://www.baidu.com/s?wd=房地产

parse方法会对爬取后的内容进行解析。如图:

思路:通过百度搜索 "房地产"这个关键词,我们看如下结果:

每个url都是在 class="c-container" 标签下的<h3>下的<a>标签中href属性。so我们用python提供的selector选择器进行文本解析。

同理,通过for container in containers:
依次取出container下的 url、title、abstract。

然后递归调用scrapy.Request(href,callback=self.parse_url) parse_url方法获取content。如题:

执行项目

写完后,我们进入到该目录下执行脚本命令:scrapy runspider RobotSearchSpider.py

结果如图:

结果提取到以后,就要开始数据入库了,这时候就要用到item.py文件了。这个不细说了,看官方文档即可。

时间: 2024-08-08 13:47:52

机器人--寒暄库(数据准备2)的相关文章

机器人--寒暄库(数据准备)

上次说了机器人的寒暄库需要基于seq2seq模型来做训练,训练的前提是我们准备好了足够的数据. 这次来说一下数据准备工作. 数据的来源一般分为内部已有的积累数据,另一个就是互联网数据,比如百度...百度几乎就是互联网的一个镜像.内部积累的文本数据有限,远不如网络数据丰富.so我们就要考虑怎么获取到网络文本数据了,可能你已经猜到了,那就是爬虫. python的scrapy是一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据 安装 yum install lib

机器人--寒暄库(4)

目前智能QA系统都是基于seq2seq模型来开发(如google),seq2seq模型基于one-hot的词嵌入,每个词用一个数字代替不足以表示词与词之间的关系,word2vec通过多维向量来做词嵌入,能够表示出词之间的关系,比如:男-女≈王子-公主.基于seq2seq的思想,利用多维词向量来实现模型,预期会有更高的准确性.(~~说人话:就是把每个汉字按照一定的规则转换为一个多维矩阵表示,联系越紧密的词,在空间上距离越近,那么我们就可以得到各种近义词,如 高兴=开心 等) so 为什么要基于se

机器人--寒暄模型

上次说到了 智能推荐是怎麽做的,这次聊一下寒暄库的建设思路. 目前智能QA系统都是基于seq2seq模型来开发(如google),seq2seq模型基于one-hot的词嵌入,每个词用一个数字代替不足以表示词与词之间的关系,word2vec通过多维向量来做词嵌入,能够表示出词之间的关系,比如:男-女≈王子-公主.基于seq2seq的思想,利用多维词向量来实现模型,预期会有更高的准确性.(~~说人话:就是把每个汉字按照一定的规则转换为一个多维矩阵表示,联系越紧密的词,在空间上距离越近,那么我们就可

Replicate_Do_DB 参数发现跨库操作时从库数据不更新

问题:使用复制是设置  Replicate_Do_DB 参数发现跨库操作时从库数据不更新 1 设置从库的 replicate_do_db = test 2 主库的sql语句是跨库的insert    在test7 上插入数据到test.a 的表上. use test7; 3 主库数据更新后查看从库信息发现数据并没有插入 4 原因是mysql 在执行sql前检查的当前默认库,所以跨库的sql语句不会被执行. 解决方案: 1 使用参数   replicate-wild-ignore-table =t

spring-mvc----数据库数据到页面错误--tomcat启动不了

spring-mvc----数据库数据到页面错误 错误为: 解决: 开启管理员cmd.到tomcat的目录下,-->shutdown.bat 不用重启,不用关机. 原文地址:https://www.cnblogs.com/meiLinYa/p/8778434.html

菁优网(jyeoo.com)题库数据(题目数据超102万组题数据超2100万含图片)

本文原创作者:数据超市(http://www.data-shop.net) 本文原始链接:http://www.data-shop.net/2016/03/jyeoo_com_20160321/ 数据说明:菁优网(http://www.jyeoo.com/)的题库数据.是按网站上的学科.教材组题来采集的,数据总数21,125,850条.数据包括以下学科:小学 – 数学初中 – 数学,物理,化学,生物,地理高中 – 数学,物理,化学,生物 特别说明:本次采集内容包括菁优网上初中.高中.小学的所有的

跨库数据表的运算

文章出自http://c.raqsoft.com.cn/article/1536666621882?r=niu 1.    简单合并(FROM) 所谓跨库数据表,是指逻辑上同一张数据表被分别存储在不同数据库中.其原因有可能是因为数据量太大,放在一个数据库难以处理,也可能在业务上就需要将生产库和历史库分开.而不同的数据库,可能只是部署在不同的机器上的同种数据库,也可能是连类型都不同的数据库系统. 在面对跨库数据表,特别是数据库类型都不相同的情况时,数据库自带的工具往往就力所不及了,一般都需要寻找能

mysql跨库数据表的运算

跨库数据表的运算,一直都是一个说难不算太难,说简单却又不是很简单的.总之是一个麻烦的事.大量的.散布在不同数据库中的数据表们,明明感觉要把它们合并起来,再来个小小的计算,似乎也就那么回事……但真要做起来,需要这又忘了那的,却又不像仅仅就那么回事?        想要给这些小麻烦们,来一个快刀斩乱麻式的.嘁嚓咔嚓地一劳永逸的解决方案么?首先,你需要一把叫做集算器的宝刀(重点):然后,你可以再看看这篇算是买一赠一的秘传刀法(免费):最后,面向敌人们手起刀落……你就可以轻松愉快地去睡一个好觉了:跨库数

分享一个远程更新目标库数据的存储过程

本文给大家分享一个远程更新目标库数据的存储过程,适用于更新列名一致,主键为Int类型,可远程链接的数据库.USE [Table]--切换到源表,就是数据最新的那个表GO/****** Object: StoredProcedure [dbo].[proc_DataUpdate] Script Date: 2018/5/4 15:08:56 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO(http://www.0831jlyy.com)--