webmagic icon indicating copy to clipboard operation
webmagic copied to clipboard

A scalable web crawler framework for Java.

Results 147 webmagic issues
Sort by recently updated
recently updated
newest added

针对不同的请求,使用不同的函数处理,在Request,增加一个handler属性,handler用来处理page对象,这样针对不同的请求,就能在不同的方法里处理,现在全部都在process一个方法处理感觉好麻烦

ERROR us.codecraft.webmagic.downloader.CustomRedirectStrategy(CustomRedirectStrategy.java:37) ## 强转为HttpRequestWrapper出错 Post请求发送json,返回经常出现这个问题.

bug
toTest

项目又开始更新了?有最新开发计划吗

page.getHtml().links()使用us.codecraft.webmagic.selector.LinksSelector挑选a标签。 在获取a标签的href属性时,调用会org.jsoup.internal.StringUtil#resolve(java.net.URL, java.lang.String),用来把相对路径的请求转换为绝对路径。resolve中又使用URL类来解析href属性. 对于``,URL类会把href中内容解析为javascript协议,并调用getURLStreamHandler获取协议对应的URLStreamHandler。因为JAVA中没有对javascript协议的实现,会导致大量无用查找过程。 具体影响可能跟javascript:数量有关。 我母亲通过 URL.setURLStreamHandlerFactory来解决,但是setURLStreamHandlerFactory只能被调用一次,感觉很多时候不合适 > URL.setURLStreamHandlerFactory(new URLStreamHandlerFactory() { URLStreamHandler javascriptHandler = new URLStreamHandler() { @Override protected URLConnection openConnection(URL u) throws IOException { return null; } }; @Override...

javax.net.ssl.SSLHandshakeException: Received fatal alert: protocol_version at sun.security.ssl.Alert.createSSLException(Alert.java:131) at sun.security.ssl.Alert.createSSLException(Alert.java:117) at sun.security.ssl.TransportContext.fatal(TransportContext.java:311) at sun.security.ssl.Alert$AlertConsumer.consume(Alert.java:293) at sun.security.ssl.TransportContext.dispatch(TransportContext.java:185) at sun.security.ssl.SSLTransport.decode(SSLTransport.java:149) at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1143) at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1054) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:394) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:436) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:384) at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142) at...

根据响应状态码判断是否走重试机制

我今天在使用免费代理,正常应该是要爬取1000个页面,结果只爬取了几十个。 最后发现是因为代理质量查,经常导致请求后返回400状态码,响应体也是错误的。但其实不用代理就能返回正确内容。 我原本以为这样的情况一定会走重试机制,但最后发现是,HttpClientDownloader中不论htttp请求的响应体状态码是200或400,只要请求没有报错。那么Page.downloadSuccess就置为true。us.codecraft.webmagic.Spider#processRequest中只要downloadSuccess为true,就不会走重试的分支。

比如抓取url_a重定向到了url_b,在最终的页面如果有的超链接写的是相对路径,比如c?k=v,那么在做超链接填充的时候取得是request中的url_a拼上相对路径为url_a/c?k=v,但这个link是错误的,正确的应该是url_b/c?k=v。目前这个问题导致的问题是link无限叠加扩充 这种情况确实可能存在,目前url是根据redirect之前的地址来做判断和去重的,能不能给个例子? http://www.legalinfo.gov.cn/ 这个地址在获取首页里面的js时候就会出现以上的问题 _Originally posted by @code4craft in https://github.com/code4craft/webmagic/issues/479#issuecomment-285834984_

如何实现个简易的webmagic? 类似scrapy包含Downloader、PageProcessor、Scheduler、Pipeline这几个组件

neither wget nor curl have such a feature and some sites obfuscate access to public domain documents behind js walls