我使用以下软件包Apache zookeeper 3 . 4 . 14 Apache storm 1 . 2 . 3 Apache Maven 3 . 6 . 2 elastic search 7 . 2 . 0(本地托管)Java 1.8.0_252 aws ec2中型实例,带4GB ram
我已经使用这个命令来增加jvm的虚拟内存(之前它显示了jvm没有足够内存的错误)
我已经创建了 maven 包 -
mvn archetype:generate -DarchetypeGroupId=com.digitalpebble.stormcrawler - DarchetypeArtifactId=storm-crawler-elasticsearch-archetype -DarchetypeVersion=LATEST
用于提交拓扑
Storm罐目标/newscrawler-1.0-SNAPSHOT.jarorg.apache.storm.flux.Flux--本地es-crawler.flux--睡眠30000的命令
当我运行这个命令时,它显示我的拓扑已成功提交,并且在elasticsearch状态索引中它显示FETCH_ERROR以及来自seeds.txt的url
内容索引在 Elasticsearch 中未显示任何命中数
在worker.log文件中有许多以下类型的html" target="_blank">异常-
java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[?:1.8.0_252]
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:714) ~[?:1.8.0_252]
at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvent(DefaultConnectingIOReactor.java:174) [stormjar.jar:?]
at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvents(DefaultConnectingIOReactor.java:148) [stormjar.jar:?]
at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:351) [stormjar.jar:?]
at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:221) [stormjar.jar:?]
at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64) [stormjar.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]
2020-06-12 10:31:14.635 c. d. s. e. p. AggregationSpout Thread-46-spout执行器[17 17][INFO][spout#7]使用nextFetchDate填充缓冲区
worker.log中有以下与elasticsearch相关的日志
'禁止:org.elasticsearch.client。ResponseException:方法[POST],主机[http://localhost:9200],URI[/status/_search?typed_kkeys=true
'禁止:org.elasticsearch.client。ResponseException:方法[POST],主机[http://localhost:9200],URI[/status/_search?typed_kkeys=true
我已经检查了碎片的健康状况,它们处于绿色状态。
早些时候我使用的是Java 11,使用它我无法提交拓扑,所以我转到了Java 8。现在拓扑提交成功,但Elasticsearch中没有注入数据。
我想知道java和elasticsearch之间的版本不兼容或其他任何包是否存在问题。
使用种子文件的绝对路径,并在远程模式下运行它。本地模式应该主要用于调试。睡眠参数是(我认为)以毫秒为单位。上面的命令意味着拓扑将只运行30秒,这并没有给它太多的时间做任何事情。
在网络爬虫运行时出现异常,若不处理则会因报错而终止运行,导致爬取数据中断,所以异常处理还是十分重要的。 urllib.error可以接收有urllib.request产生的异常。urllib.error有两个类,URLError和HTTPError。 URLError内有一个属性:reason 返回错误的原因 # 测试URLError的异常处理 from urllib import request
有的时候,当我们的爬虫程序完成了,并且在本地测试也没有问题,爬取了一段时间之后突然就发现报错无法抓取页面内容了。这个时候,我们很有可能是遇到了网站的反爬虫拦截。 我们知道,网站一方面想要爬虫爬取网站,比如让搜索引擎爬虫去爬取网站的内容,来增加网站的搜索排名。另一方面,由于网站的服务器资源有限,过多的非真实的用户对网站的大量访问,会增加运营成本和服务器负担。 因此,有些网站会设置一些反爬虫的措施。我
本文向大家介绍Python常用爬虫代码总结方便查询,包括了Python常用爬虫代码总结方便查询的使用技巧和注意事项,需要的朋友参考一下 beautifulsoup解析页面 unicode编码转中文 url encode的解码与解码 html转义字符的解码 base64的编码与解码 过滤emoji表情 完全过滤script和style标签 过滤html的标签,但保留标签里的内容 时间操作 数据库操作
这一章将会介绍使用一些新的模块(optparse,spider)去完成一个爬虫的web应用。爬虫其实就是一个枚举出一个网站上面的所有链接,以帮助你创建一个网站地图的web应用程序。而使用Python则可以很快的帮助你开发出一个爬虫脚本. 你可以创建一个爬虫脚本通过href标签对请求的响应内容进行解析,并且可以在解析的同时创建一个新的请求,你还可以直接调用spider模块来实现,这样就不需要自己去写
python应用最多的场景还是web快速开发、爬虫、自动化运维:写过简单网站、写过自动发帖脚本、写过收发邮件脚本、写过简单验证码识别脚本。 爬虫在开发过程中也有很多复用的过程,这里总结一下,以后也能省些事情。
根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用爬虫 通用网络爬虫 就是 捜索引擎抓取系统,目的是将互联网上的所有的网页下载到本地,形成一个互联网内容的镜像备份。 它决定着整个搜索引擎内容的丰富性和时效性,因此它的性能优劣直接影响着搜索引擎的效果。 通用搜索引擎(Search Engine)工作原理 第一步:抓取网页 搜索引擎网络爬虫的基本工作流程如下: 首先选取一部分的初始UR