在学习过程中,遇到一个小说网站:h@t@t@p@s@:@/@/@w@w@w@.@i@b@i@q@u@g@e@s@.@c@o@m@/@1@/@1@7@1@0@/@1@2@9@8@2@6@6@.@h@t@m@l@
get后,print text内容,发现中间小说内容部分没了,而这部分内容正是想要获取的,难道一个小说网站(很普通的网站)反pa也这么厉害(网页源代码中是有的)?
于是加cookie,refere等各种header,最后全部header都加入了,依旧不行。一直以为是访问问题,吃完中饭,直接在pycharm中write,居然惊奇的发现内容一点不少。下面摘抄一点print时少的内容:
“<div id="content"> 新书小三先开通了,方便........”,这个vscode中print显示的(当时就忘了用vscode试试)。
开始以为pycharm在print时,省略了一些内容,可一想又不对,正常省略内容也会有....这样的省略号啊,猜测应该是遇到了某种特殊字符,导致无法显示。
猜测可能是<br />这类的,但能够打印出的也有此类字符,所以到现在还不清楚到底发生了什么。但有一点是确认的,当用xpath处理text后,发现内容部分是类似以下的文本:
['\xa0\xa0\xa0\xa0新书小三先开通了,方便......谢大家的支持\r', '\r',......嘿嘿。\r', '\r', '\xa0\xa0\xa0\xa0;'] for可以把每行print出来,但join后,只有末尾的“ ;”。猜测,\r之前的都被干掉了,下面做几个实验: print('12345\r')print('12345\r678') pycharm:
12345
678
vscode:
12345
67845
IDLE:
12345
12345 678
原因看这里:https://www.cnblogs.com/LegendsNeverDie/p/10372052.html
结论1:pycharm里\r如果之后有内容,会全部覆盖之前的内容,如果没有,之前的内容依旧保留。(这也是为什么for时单行输出没问题,而join后剩下最后一个元素的原因)
vscode里\r如果之后有内容,会按位置替换之前的内容,位置不够时,之前剩下的内容会保留,位置够时,就都是\r之后的内容了。
IDLE里不会处理\r。
由此可见,很可能是返回的网页中的某些字符产生了类似于\r的作用(但我写出的txt中并未发现,所以还是迷),导致pycharm中并未显示,vscode中也有些不全。
结论2:不要完全相信print,在遇到少内容时,可以尝试write出来看看。
标签:xa0,text,vscode,内容,print,pycharm,response From: https://www.cnblogs.com/sbsdnyn/p/17563245.html