Releases: code4craft/webmagic
WebMagic-0.7.5
What's Changed
- [Fix] #698 修复使用Redis,Request丢失附加信息问题 by @jianyun8023 in #702
- [Fix] 修正错误方法名 by @jianyun8023 in #703
- fix the typo by @aristotll in #658
- [Snyk] Fix for 2 vulnerabilities by @snyk-bot in #895
- [Snyk] Fix for 1 vulnerabilities by @snyk-bot in #897
- [Snyk] Fix for 1 vulnerabilities by @snyk-bot in #899
- [Snyk] Fix for 1 vulnerabilities by @snyk-bot in #908
- [Snyk] Fix for 1 vulnerabilities by @snyk-bot in #911
- [Snyk] Security upgrade com.github.dreamhead:moco-core from 0.11.0 to 1.0.0 by @snyk-bot in #914
- [Snyk] Security upgrade com.github.dreamhead:moco-core from 0.11.0 to 1.0.0 by @snyk-bot in #920
- [Snyk] Security upgrade com.github.dreamhead:moco-core from 0.11.0 to 1.0.0 by @snyk-bot in #922
- [Snyk] Security upgrade com.github.dreamhead:moco-core from 0.11.0 to 1.0.0 by @snyk-bot in #923
- [Snyk] Security upgrade com.github.dreamhead:moco-core from 0.11.0 to 1.0.0 by @snyk-bot in #925
- [Snyk] Fix for 15 vulnerable dependencies by @snyk-bot in #889
- [Snyk] Fix for 1 vulnerable dependencies by @snyk-bot in #882
- Add unit tests for us.codecraft.webmagic.utils.NumberUtils by @ThomasPerkins1123 in #885
- build: manage plugin version & remove build WARNING by @leeyazhou in #939
- [Snyk] Security upgrade com.alibaba:fastjson from 1.2.68 to 1.2.69 by @snyk-bot in #946
- [Snyk] Security upgrade org.apache.httpcomponents:httpclient from 4.5.12 to 4.5.13 by @snyk-bot in #955
- [Snyk] Security upgrade junit:junit from 4.13 to 4.13.1 by @snyk-bot in #957
- [Snyk] Security upgrade com.google.guava:guava from 29.0-jre to 30.0-android by @snyk-bot in #959
- 子任务可以使用不同的下载器。。。 by @itranlin in #974
- 主要是对代理的功能进行了增加和修改 by @yaoqiangpersonal in #976
- Remove useless imports to fix build. by @sutra in #977
- SpiderStatus中getPagePerSecond()方法,增加验证逻辑,避免空指针,避免除数为零。 by @yqia182 in #993
- 增加了List属性的get方法,供SpiderMonitor的子类获取. by @thebirdandfish in #1000
- [Snyk] Security upgrade com.github.dreamhead:moco-core from 1.1.0 to 1.2.0 by @snyk-bot in #1011
- 提交可恢复爬取内容例子 by @linweisen in #1013
- Update to Jedis 3.6.0 by @gkorland in #1025
- [Snyk] Security upgrade com.jayway.jsonpath:json-path from 2.4.0 to 2.6.0 by @snyk-bot in #1029
New Contributors
- @jianyun8023 made their first contribution in #702
- @aristotll made their first contribution in #658
- @ThomasPerkins1123 made their first contribution in #885
- @leeyazhou made their first contribution in #939
- @itranlin made their first contribution in #974
- @yaoqiangpersonal made their first contribution in #976
- @sutra made their first contribution in #977
- @yqia182 made their first contribution in #993
- @thebirdandfish made their first contribution in #1000
- @linweisen made their first contribution in #1013
- @gkorland made their first contribution in #1025
Full Changelog: WebMagic-0.7.3...WebMagic-0.7.5
WebMagic-0.7.3
本次更新增加了Downloader模块的一些功能。
#609 修复HttpRequestBody没有默认构造函数导致无法反序列化的bug。
#631 HttpRequestBody的静态构造函数不再抛出UnsupportedEncodingException
受检异常。
#571 Page对象增加bytes属性,用于获取二进制数据。下载纯二进制页面时,请设置request.setBinarayContent(true)
,这样对于二进制内容不会尝试转换为String,减小开销。
#629 在HttpUriRequestConverter中会自动对一些导致URI异常的字符进行转移或过滤。
#610 自动识别编码时,可以识别Content-Type中charset为大写的情况。
#627 支持为Request单独设置页面编码,兼容同一站点多种编码方式的情况。
#613 Page对象增加charset属性,其值为request/site中设置的charset,或者为自动检测的charset(未定义时)。
WebMagic-0.7.2
WebMagic-0.7.1
此次更新包含几个比较大的Bugfix,以及一些遗留问题的改进。
WebMagic-0.7.0
此次更新重写了HttpClientDownloader,完善了POST等其他Http Method的支持,并重写了代理API,更加简单和便于扩展。
POST支持
- 新的POST API,支持各种RequestBody #513
Request request = new Request("http://xxx/path");
request.setMethod(HttpConstant.Method.POST);
request.setRequestBody(HttpRequestBody.json("{'id':1}","utf-8"));
- 移除了老的在request.extra中设置NameValuePair的方式
- POST请求不再进行去重 #484
代理支持
- 新的代理API
ProxyProvider
,支持自由扩展 - 默认实现SimpleProxyProvider是一个简单的round-robin实现,可以添加任意个数的代理。
HttpClientDownloader httpClientDownloader = new HttpClientDownloader();
SimpleProxyProvider proxyProvider = SimpleProxyProvider.from(new Proxy("127.0.0.1", 1087), new Proxy("127.0.0.1", 1088));
httpClientDownloader.setProxyProvider(proxyProvider);
- 移除了Site上关于代理配置的setProxy等,代理设置统一到HttpClientDownloader里。
新的SimpleHttpClient
- 用作简单的单次下载和解析时,使用SimpleHttpClient可以满足需求
SimpleHttpClient simpleHttpClient = new SimpleHttpClient();
GithubRepo model = simpleHttpClient.get("github.com/code4craft/webmagic",GithubRepo.class);
其他改动
- 为Page中增加状态码和Http头信息 #406
- 支持Request级别设置Http Header和Cookie
- 去掉Site.addStartRequest() , 用Spider.addStartRequest()代替 #494
- HttpClientDownloader大幅重构,将Request转换抽象到HttpUriRequestConverter(之前继承HttpClientDownloader的实现可能需要做相应修改) #524
- 将CycleRetry和statusCode的判断逻辑从Downloader中迁移到Spider中 #527
- 通过Page.isDownloadSuccess而不是Page对象本身为空来判断是否下载失败
- 为PageModel增加不发现新URL的功能 #575
- 为Site增加了disableCookieManagement属性,在不想使用cookie时使用 #577
WebMagic 0.6.1
WebMagic 0.6.0
此次更新主要是一些依赖包的升级和bugfix。
-
#194 重构代理池部分代码,支持自定义代理池 @EdwardsBean
-
#314 修复低版本json-path依赖2.x的StringUtils导致报错的问题
-
#380 升级fastjson 到1.2.21
-
#301 修复JsonPath在注解模式不可用的问题 @Salon-sai
-
#377 修复监控模块在URL带有端口时会报错的问题
-
#400 修复FileCacheQueueScheduler的NullPointerException问题
-
#374 升级HttpClient到4.5.2,修复一些安全问题
-
#424 去掉Guava依赖
因为Guava不同版本兼容性不好,经常导致demo无法运行,所以我最后决定去掉了Guava的依赖。如果使用了
BloomFilterDuplicateRemover
的用户,需要手动依赖Guava包。 -
#426 去掉Avalon相关包
Avalon是之前计划的一站式抓取平台。因为有个朋友基于WebMagic做了类似的实现Gather Platform,所以Avalon放弃了,转而支持这个项目。WebMagic核心会专注于做应用内的框架。
WebMagic 0.5.3
时隔一年半,作者终于回归了。这个版本主要解决之前的一些BUG,后续会慢慢的继续完善功能。
- 升级Xsoup到0.3.1,支持//div[contains(@id,'te')]语法。
- #245 升级Jsoup到1.8.3,解决n-th selector二进制不兼容的问题。
- #139 修复JsonFilePipeline保存路径的问题
- #144 修复@targeturl增加SourceRegion后取不到链接的问题
- #157 修复FileCacheQueueScheduler中去重偶尔不工作的问题 @zhugw
- #188 增加重试的间隔时间,默认为1秒 [@EdwardsBean](ht[tps* //github.com/edwardsbean)
- #193 修复分页功能MultiPagePipeline可能出现的并发问题 edwardsbean
- #198 修正site.setHttpProxy()不起作用的bug @okuc
WebMagic-0.5.2
此次主要包括对于Selector部分的重构,以及一些功能的完善和一些Bugfix。
-
重构了Selector部分,使得结构更清晰,并且能够更好的支持链式的XPath抽取了。 [Issue #113]
-
支持对于选取出来的结果,进行外部迭代。例如:
List<Selectable> divs = html.xpath("//div").nodes(); for (Selectable div : divs) { System.out.println(div.xpath("//h2").get()); }
-
增强自动编码识别机制,现在除了从HTTP头中,还会从HTML Meta信息中判断编码,感谢@fengwuze @sebastian1118提交代码和建议。[Issue #126]
-
升级Xsoup版本为0.2.4,增加了判断XPath最终抽取结果(是元素还是属性)的API,完善了一些特殊字符处理的功能。
-
增加PageMapper功能,以后可以在任何地方使用注解模式来解析页面了![Issue #120] 例如:
public void process(Page page) { //新建Mapper,GithubRepo是一个带注解的POJO PageMapper<GithubRepo> githubRepoPageMapper = new PageMapper<GithubRepo>(GithubRepo.class); //直接解析页面,得到解析后的结果 GithubRepo githubRepo = githubRepoPageMapper.get(page); page.putField("repo",githubRepo); }
-
增加多个代理以及智能切换的支持,感谢@yxssfxwzy 贡献代码,使用Site.setHttpProxyPool可开启此功能。[Pull #128]
public void process(Page page) { Site site = Site.me().setHttpProxyPool( Lists.newArrayList( new String[]{"192.168.0.2","8080"}, new String[]{"192.168.0.3","8080"})); }
Bugfix:
- 修复了JsonFilePipeline不能自动创建文件夹的问题。[Issue #122]
- 修复了Jsonp在removePadding时,对于特殊字符匹配不当的问题。[Issue #124]
- 修复了当JsonPathSelector选取的结果是非String类型时,类型转换出错的问题。[Issue #129]
WebMagic 0.5.1
此次更新主要包括Scheduler的一些改动,对于自己定制过Scheduler的用户,强烈推荐升级。
- 修复了RedisScheduler无法去重的BUG,感谢@codev777 仔细测试并发现问题。 #117
- 对Scheduler进行了重构,新增了接口
DuplicateRemover
,将去重单独抽象出来,以便在同一个Scheduler中选择不同的去重方式。 #118 - 增加了BloomFilter去重方式。BloomFilter是一种可以用极少的内存消耗完成大量URL去重的数据结构,缺点是会有少量非重复的URL被判断为重复,导致URL丢失(小于0.5%)。
使用以下的方式即可将默认的HashSet去重改为BloomFilter去重:
spider.setScheduler(new QueueScheduler()
.setDuplicateRemover(new BloomFilterDuplicateRemover(10000000)) //10000000是估计的页面数量