zoukankan      html  css  js  c++  java
  • 机器人--寒暄库(数据准备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_AGENTua,也就是发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下的 urltitleabstract

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

     

    执行项目

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

    结果如图:

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

     

  • 相关阅读:
    .Net Core 3.1 解决数据大小限制
    Linux通过nginx反向代理net core项目
    外网无法通过IP访问部署在Windows服务器上的网站
    .NET Core项目部署时自定义端口号
    .NET Framework webAPI上传文件大小限制
    Windows服务器上部署.net core项目
    Windows服务器中PowerShell的使用
    Windows中命令提示符的打开和使用
    Linux部署net core并添加守护进程
    什么是串口服务器
  • 原文地址:https://www.cnblogs.com/xulele/p/6973908.html
Copyright © 2011-2022 走看看