xxl-crawler
xxl-crawler copied to clipboard
A distributed web crawler framework.(分布式爬虫框架XXL-CRAWLER)
你好,我在测试用例中没有找到post请求的模板调用 这是我的调用代码 ` Map dataMap = new HashMap(); dataMap.put("category","**"); dataMap.put("currentPage","1"); dataMap.put("pageSize","30"); Map headerMap = new HashMap(); headerMap.put("Accept-Encoding","gzip"); headerMap.put("Content-Type","application/json;charset=UTF-8"); headerMap.put("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"); XxlCrawler xxlCrawler...
setWhiteUrlRegexs("https://www.kuaidaili.com/free/inha/\\b[1-2]/") 例如这种方式它不会匹配两个url,whiteUrlRegexs.length为1
【需求】VO嵌套
PageFieldSelect能否使用复杂类型?希望爬取1-N的数据结构
- **issue description**: 多线程情况下,tryFinish()会误判`CrawlerThread`的运行状态,导致提前stop,以下是运行XxlCrawlerTest,开启3个thread,并打印日志:  概率比较小,大概试10次能出现一次,原因可能如下: thread-3调用`tryFinish()`并提前获取了3个CrawlerThread的`isRunning`状态均为false,刚好此时thread-1调用了`crawler.getRunData().getUrl()`并将running设为true(但thread-3已经无法知晓),最后thread-3判断`runData.getUrlNum()==0`为true,由此`isEnd`为true,导致了误判:  - **solution**: 1. 改写`tryFinish()`,先判断`runData.getUrlNum()==0`,再逐一获取CrawlerThread的状态,防止调用`crawler.getRunData().getUrl()`无法获取running的最新状态: ```java public void tryFinish(){ boolean isEnd = runData.getUrlNum()==0; boolean isRunning = false; for (CrawlerThread crawlerThread: crawlerThreads) { if...
针对post请求,相同的url,根据参数不同返回不同结果的页面抓取实现 是否可考虑在解析页面结果的类中返回当前爬虫对象,这样可以在处理完上一个页面抓取后,向爬虫对象中的url队列添加新的url。增强现在的只能在爬虫初始化的时候添加url(或者只能粗犷的扩散爬取)功能。
打开了扩散全站的功能, 但是在 JsoupUtil.findLinks()方法中筛选到的url不全, 标签获得的href是相对路径, 不是决定路径. 使用下面三种方法获得的值全部是相对路径, 校验url不通过导致, 扩散爬取失败, 大佬有遇到过这种情况吗 ? tips: 使用 JS渲染方式采集数据,"selenisum + phantomjs" 方案 1. item.absUrl("abs:href"); 2. item.attr("abs:href"); 3. item.attr("href"); 爬取的url是 http://www.bootcss.com/
LocalRunData 中 使用 LinkedBlockingQueue 来记录需要爬取的url, 这是一个线程安全的队列, 还需要加 volatile 关键字吗 ?
```java Document html = Jsoup.parse(pageAsXml); ``` 返回的html没有baseurl,后期使用获取不到,如图 手工set了一下 ```java Document html = Jsoup.parse(pageAsXml); html.setBaseUri(pageRequest.getUrl()); ``` 
// ------- pagevo ---------- if (!crawler.getRunConf().validWhiteUrl(link)) { // limit unvalid-page parse, only allow spread child return false; } 这一段代码返回false,如果用户设置了重试次数,会导致无意义的重试。这里应该返回true