1
aristotll 2016-06-11 15:25:15 +08:00
|
2
protream OP @aristotll 我是在 Ubuntu 下写的, Windows 下没有测试, 要不你帮忙看看哪有问题, 帮忙改一个啊。新手务怪。
|
3
Allianzcortex 2016-06-11 15:50:34 +08:00
挺有意思的一个应用。 argparser + termcolor 应该也可以
|
4
xiahei 2016-06-11 15:52:09 +08:00
挺不错, Mark.
|
6
xsxsxszs 2016-06-11 15:55:24 +08:00 via iPhone
挺有意思的 哈哈 赞一个
|
8
krivol 2016-06-11 16:04:47 +08:00 via Android
赞一个
|
9
9hills 2016-06-11 16:09:49 +08:00 2
|
11
aristotll 2016-06-11 16:19:21 +08:00
@protream 类似这样是能取到的 from_station_code = stations.get(arguments['<from>'].decode('gbk').encode('utf8'))
|
12
imn1 2016-06-11 16:20:06 +08:00
|
14
9hills 2016-06-11 16:27:19 +08:00
@aristotll windows 上?,我这里实测可以
C:\Python27>python Python 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] on wi 32 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> print sys.stdin.encoding cp936 >>> |
15
Allianzcortex 2016-06-11 16:28:54 +08:00
所以最终原则是不要在 Windows 下编码,否则 GBK 会把你弄疯的。看了一下源码,其实是不用手动构造 query_url 的。 requests 里有一个参数是 params,直接用一个 dict 传进去就可以了。
|
16
cashew 2016-06-11 16:34:35 +08:00
Ubuntu 下完美运行。不错。
|
17
21grams 2016-06-11 16:48:59 +08:00
先 star 一个慢慢看
|
18
heraldboy 2016-06-11 17:34:11 +08:00
不错, mac 下没问题。
|
19
protream OP @Allianzcortex 谢谢指点。不知道为什么, 请求 12306 的参数顺序不对得不到数据,而用 dict 传参会打乱参数顺序
|
20
protream OP @Allianzcortex 改用 OrderedDict 了
|
21
justou 2016-06-11 17:55:46 +08:00
@protream
# For Python2 if sys.version < '3': reload(sys) sys.setdefaultencoding('utf-8') 看了下源码, py2 下这样做是很危险的, 会打乱整个程序的运行环境, 尤其是当使用了 sys.setdefaultencoding('utf-8')的代码被用到更大的程序中时, 程序何时崩溃都不奇怪, 一开始处理编码问题时也这样用, 直到程序莫名其妙的退出... http://stackoverflow.com/search?q=sys.setdefaultencoding%28%27utf-8%27%29 |
23
sudo987 2016-06-11 18:26:26 +08:00 via iPhone
iOS 下不能输入中文,怎么解决
|
24
cc7756789 2016-06-11 18:53:44 +08:00
这个数据是从哪里查的
|
26
fhefh 2016-06-11 23:20:49 +08:00
nice
|
27
sixer 2016-06-11 23:46:00 +08:00
真不错
|
28
Arnie97 2016-06-11 23:46:08 +08:00 via Android
除了编码坑以外, ANSI 转义字符在 Windows 下也不能用。可以考虑 colorama
|
29
araraloren 2016-06-12 09:05:48 +08:00
@cc7756789 12306 实时爬取的,否则有啥意义。。
|
30
wujunze 2016-06-12 10:20:40 +08:00
最近在学 python mark 一下
|
31
Tink 2016-06-12 10:31:10 +08:00 via iPhone
这类界面一般是咋画出来的
|
33
warcraft1236 2016-06-12 11:08:17 +08:00
没看具体的,不过当我看到 Linux 下编写, Windows 下没有测试,而且还是个命令行工具的时候,我就知道编码问题要出来了
|
35
protream OP @warcraft1236 大神, 求指点
|
36
warcraft1236 2016-06-12 11:18:35 +08:00
@protream 我也是初学者。也是头疼编码的问题很多次,才稍微了解一下。简单来说就是, Windows 下的 CMD 用汉字编码是 GBK ,而 Linux 这些是 UTF-8 , GBK 的字数少,所以有些 UTF-8 编码存在的文字, GBK 不存在,而且 GBK 是有损编码,所以这两个编码在转换中不能保持一致,就是 UTF-8 字符串转换成 GBK 然后再转成 UTF-8 之后,和原字符串不是相等的。具体的文章,伯乐在线有过相关文章,具体名字既不清楚了,是讲 MySQL 的 编码问题,讲了常用的编码是怎么回事
|
37
protream OP @warcraft1236 谢谢。感觉要是都用 utf-8 编码这个世界就清静了。
|
38
cruisehu 2016-06-12 12:16:17 +08:00
Could not find a version that satisfies the requirement ticket (from versions: )
No matching distribution found for ticket |
39
wjfz 2016-06-12 13:12:02 +08:00
看评论想到一个段子: Pythoner 一半时间都在解决编码问题😂
|
43
Tinet 2016-06-12 14:03:45 +08:00
不知道这个数据源是哪里来的,我查了重庆到杭州的票,居然没有动车的信息
|
47
warcraft1236 2016-06-12 15:32:01 +08:00
@protream 你是准备做 Python 的开发吗?
|
48
exoticknight 2016-06-12 15:37:44 +08:00
argparser 跟这个的区别?
我以前写一个爬广播数据的脚本是用 argparser 写的 |
49
protream OP @warcraft1236 是的。准备从 Python 做起。
|
50
protream OP @exoticknight 都是写命令行应用的工具,没本质区别, 只是解析参数的方式不一样
|
51
Geoion 2016-06-12 18:30:38 +08:00
python 2.x 下这个编码问题啊,一颗赛艇 !! 口..口
|
53
alexapollo 2016-06-12 22:36:20 +08:00
很有趣啊,不过有 JSON 格式的输出吗?
|
54
protream OP @alexapollo 添加一个功能导出 Json 或 cvs 什么的并不难,不过有什么用?
|
55
alexapollo 2016-06-12 22:47:57 +08:00
@protream 比较好复用,或者做成包来复用也不错
|
56
richzhu 2016-06-12 23:27:17 +08:00 via iPhone
不错,留言 mark
|
57
a414121088 2016-06-13 10:45:18 +08:00
请问写了多长时间
|
59
protream OP @a414121088 断断续续加起来一个晚上吧,主体并不难,主要是一些细节优化
|
60
protream OP @qooweds 不应该啊,默认支持 50 天内的查询。难道又是编码的问题?你有试试其他数据格式吗?另外新的版本这俩天会发布,到时候会有新的功能, 敬请关注:)
|
61
qooweds 2016-06-13 15:13:52 +08:00
|
62
shyling 2016-06-15 22:05:20 +08:00 via iPad
我写了个 ruby 版的 0 0
|
64
publicAdmin 2016-06-16 14:35:42 +08:00
Mac os 10.11 下 python2.7 下报错。- -
|
69
pengliang 2016-06-18 16:31:30 +08:00
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
|