Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

希望添加抓取特定章节的功能 #2

Closed
hzy199411 opened this issue Jul 7, 2014 · 9 comments
Closed

希望添加抓取特定章节的功能 #2

hzy199411 opened this issue Jul 7, 2014 · 9 comments

Comments

@hzy199411
Copy link

必须要全部抓取,感觉不实用

@abcfy2
Copy link
Owner

abcfy2 commented Jul 7, 2014

打算在图形化界面下实现。因为windows蛋疼的gbk编码问题,有些章节编码就会报错,导致显示不出来章节列表(Linux下无此问题),所以没加入指定章节的功能。打算在图形化界面用一个list check box显示章节,理论上可以搞定这个问题。

计划本周内抽空完成。另外,下载过的文件是不会重复下载的,程序有判定,如果目标文件存在就跳过下载,所以续传什么的没问题。不过需要注意的是可能异常关闭的时候并不会删掉未下载完成的文件(比如直接点了控制台的X关闭窗口,程序捕获不到这个),这时候需要手工删掉最后一个未下载完的文件重试。

@abcfy2 abcfy2 added wontfix and removed wontfix labels Jul 7, 2014
@hzy199411
Copy link
Author

我自己改了改,可以抓取从a到b的章节,因此增加了两个参数,感觉增加了复杂性,就不push了

@abcfy2
Copy link
Owner

abcfy2 commented Jul 8, 2014

应该不会太复杂,等会我改下程序就行了,加个参数搞定这个问题。

@abcfy2
Copy link
Owner

abcfy2 commented Jul 8, 2014

打算这么实现,支持章节序列做参数,如1,2,3,4-10,30,对应正则re.match(r'\d+([,-]\d+)*')。是否有必要加入列表切片特性?比如支持步长?感觉似乎没必要,没人那么蛋疼的去单独爬取偶数章节吧

@hzy199411
Copy link
Author

章节序列做参数,这样就足够了,另外海贼王抓取的话数从304话就比实际多一话

@abcfy2
Copy link
Owner

abcfy2 commented Jul 8, 2014

会做判定的,不会让列表out of index的

@abcfy2
Copy link
Owner

abcfy2 commented Jul 8, 2014

2be5481

增加-l|--list参数,指定以下类型格式,如:

-l 1,3,5
-l 5-7,10-100
-l 50
...

设置章节区间,并且加入以下规则判定:

  • 使用该正则过滤参数: r'[^\d+([,-]\d)*$]'
  • 如果出现数字0,打印相关警告,单独数字0直接忽略,区间(如0-9, 100-0等)出现0则置为1
  • 对参数解析之后进行去重和排序
  • 对于超过章节列表的参数,给出警告信息,并且直接忽略

增加了一个函数parseLIST(lst)用于解析-l|--list后面的参数,返回一个解析过的章节列表list

main()函数增加一个参数lst=None(main(url, path, lst=None)),用于承接-l|--list参数。

详细修改可以看commit的diff。

以上,欢迎测试,有任何BUG(s)都欢迎直接在这个issue回复

PS:代码250行~~~好整齐的数字

@hzy199411
Copy link
Author

不错,能正常下载特定章节,就是警告有点问题:比如下载1-10时 会出现,“警告: 参数中包括不存在的章节0,自动忽略”

@abcfy2
Copy link
Owner

abcfy2 commented Jul 8, 2014

感谢反馈,已修复。是我把这句的逻辑搞错了,判断min-max或者max-min这一类的格式的时候,如果min=0,就提示这个警告,我刚好给搞反了。已经修复这个BUG,可以看到commit记录在此 54fa100

顺便再加上一个commit,突然发现不加-l参数的时候少最后一话,检查发现range()的范围给搞错了,最后是半开半闭区间,最大值需要+1

@abcfy2 abcfy2 closed this as completed Jul 11, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants