我们使用Xpath来专门做一个scrapter

我们专门弄个文件夹 里面全部是 各个新闻源(CNN BBC等)的scraper来抓取网站的text内容

主要函数(就是传入text内容的那个url)然后进行抓取内容 返回 news 一会写具体内容

这个函数主要做3件事

首先 download 这个url 获取html

然后 parse html 成 tree

组合 extract information(提取信息 用Xpath或者后边自动爬内容的 第三方库 newspaper) 这里我们现用Xpath 后边再优化

进行2次伪装

下一步就是伪装header

这里需要一个 我们自己准备一个useragent的list表 每次随机从里面选一个 作为我们的useragend header

有了表 我们就要用这个表

最后再用random重新洗牌

然后 通过上面伪装的2个 去请求目标url 返回目标url的内容text 用response接收

网站获得我们的请求 查看我们的session和header就会

认为我们是正常的用户 不是机器人就会返回我们要的text 我们 就可以一直爬信息 不然就会被认为是机器人 而被拒绝或者封ip

我们获得了目标url的html

就开始做第二步了 解析这个html

我们把他放在try里面 即使失误了 也可以跳过执行后边的程序 不至于导致不work

这个包安装一下

写入文件

GET_CNN_NEWS_XPATH = "//p[contains(@class, 'zn-body__paragraph')]//text() | //div[contains(@class, 'zn-body__paragraph')]//text()"

GET_CNN_NEWS_XPATH

里面//就是不管结构 就是对所有的节点都有效 p就是p标签  contains就是包含 (cnn网站的内容) // text()获得text   |  组合(加上)后边根据条件获得div快内的text()内容拼接

这个string内容(绿色)是咋来的呢?其实是我们自己弄来的 根据cnn这个具体新闻页面(找到我们要的text内容的部分,不过几千行不好找),我们从第一个Q里面获得我们news monotor抓的新闻摘要,从里面找到我们将来要爬的url

http://us.cnn.com/2018/09/06/politics/the-25th-amendment-requires-political-apocalypse/index.html

打开看看

虽然这样也可以找到但是总归是要自己进去一层层找还是比较麻烦的

所以我们用解析工具(获取绿字内容)他的用法也很简单

安装这个插件

使用方法

https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl

还是很方便的

我们就是通过这样获取的XPATH

下面我们还是测试一下我的news scraper

下面跑一跑

我们发现 过程很复杂 而且每个网站都不一样

你要每一个source都要写一个对应的scraper

因为结构不同嘛

XPATH不同 当然

你也可以写一个scraper 运行不同XPATH

上面我们只是抓取到了新闻text

和Q相关的操作我们还没做

下面是 news fetcher 其实和news monitor 差不多

新建一个新的Q2和上次创建q一模一样

week7_demo_second_queue

干脆名字对应吧

我们去看看

所以 我们判断一下源是 cnn我们在进行下面操作

我们来试试

OK

week07 13.2 NewsPipeline之 二 News Fetcher - Xpath的更多相关文章

  1. week07 13.4 NewsPipeline之 三 News Deduper

    还是循环将Q2中的东西拿出来 然后查重(去mongodb里面把一天之内的新闻都拿出来,然后把拿到的新的新闻和mongodb里一天内的新闻组一个 tf-idf的对比)可看13.3 相似度检查 如果超过一 ...

  2. week07 13.1 NewsPipeline之 一 NewsMonitor

    我们要重构一下代码 因为我们之前写了utils 我们的NewsPipeline部分也要用到 所以我们把他们单独独立得拿出来 删掉原来的 将requirements.txt也拿出去 现在我们搬家完成 我 ...

  3. week07 13.3 NewsPipeline之 三News Deduper之 tf_idf 查重

    我们运行看结果 安装包sklearn 安装numpy 安装scipy 终于可以啦 我们把安装的包都写在文件里面吧 4行4列 轴对称 只需要看一半就可以 横着看 竖着看都行 数值越接近1 表示越相似 我 ...

  4. Linux就这个范儿 第13章 打通任督二脉

    Linux就这个范儿 第13章 打通任督二脉 0111010110……你有没有想过,数据从看得见或看不见的线缆上飞来飞去,是怎么实现的呢?数据传输业务的未来又在哪里?在前面两章中我们学习了Linux网 ...

  5. Python for Infomatics 第13章 网页服务二(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 13.4 JavaScript ...

  6. HDU 4819 Mosaic(13年长春现场 二维线段树)

    HDU 4819 Mosaic 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4819 题意:给定一个n*n的矩阵,每次给定一个子矩阵区域(x,y,l) ...

  7. 13.python基础试题(二)

    借鉴:https://www.cnblogs.com/shengyang17/p/8543712.html https://www.cnblogs.com/you-wei1/p/9693254.htm ...

  8. cocos2dx基础篇(13) 编辑框之二CCEditBox

    [3.x] (1)去掉"CC" (2)设置虚拟键盘的编辑类型 > EditBoxInputMode 变为强枚举 EditBox::EditBoxInputMode // SI ...

  9. 爬取伯乐在线文章(二)通过xpath提取源文件中需要的内容

    爬取说明 以单个页面为例,如:http://blog.jobbole.com/110287/ 我们可以提取标题.日期.多少个评论.正文内容等 Xpath介绍 1. xpath简介 (1) xpath使 ...

随机推荐

  1. 公网定制化yum仓库部署

    公网定制化yum仓库部署 (1)搭建公网源yum仓库 安装wget aliyun源 # wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun ...

  2. Python:从入门到实践--第十章--文件和异常--练习

    #.python学习笔记:在文本编辑器中新创建一个文件,写几句话老总结你至此学到的python知识 #其中‘In Python you can’ 打头.将这个文件命名为learning_python. ...

  3. Okhttp、Volley和Gson的简单介绍和配合使用

    转载自:http://www.apkbus.com/home.php?mod=space&uid=784586&do=blog&id=61255 1.okhttp是一个高效的. ...

  4. css自定义checkbox和radio样式

    很常见的问题,也有许多人写过类似的文章,自己写来记录下 css代码如下: #myCheck + label,.myRadio + label{ width:16px; height:16px; bor ...

  5. yii2 Rbac实例 (做完以下这些 会有些小的报错,相信各位都能解决,大多数都是自己命名空间上的问题)。

    首先我自己没有使用自带的user表 如果model层没有AuthItem.php   那就自建一个将下面这些内容写入 <?php namespace backend\models; use Yi ...

  6. PTA——组合数

    PTA 7-48 求组合数 #include<stdio.h> double fact(int n); int main() { int m,n; int c; scanf("% ...

  7. 远程桌面连接问题,ping服务器ip无法连接主机。

    今天是礼拜一,上班的第一天去连公司的服务器,远程桌面竟然登录不上. 试了一下同事的电脑,也是一样的情况无法连接到远程计算机.这下可把我急坏了. 试了很多方法,也重新启动了服务器,重启后同事的win10 ...

  8. hsdfz -- 6.16 -- day1

    恩这回不写游记了 按照老师要求记录今天的心里路程:这题似乎可做期望得分150->日部分分似乎不是很显然->a题似乎是结论题,大力猜一波结论->过不了样例,先看b题->b题动态树 ...

  9. day45 jQuery

    在用js写代码时,会遇到一些问题: window.onload 事件有事件覆盖的问题,因此只能写一个事件. 代码容错性差. 浏览器兼容性问题. 书写很繁琐,代码量多. 代码很乱,各个页面到处都是. 动 ...

  10. redis 5.0.3 讲解、集群搭建

    REDIS 一 .redis 介绍 不管你是从事Python.Java.Go.PHP.Ruby等等... Redis都应该是一个比较熟悉的中间件.而大部分经常写业务代码的程序员,实际工作中或许只用到了 ...