print response.text 打印网页返回内容时遇到丢失内容的情况\r

在学习过程中,遇到一个小说网站: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">&nbsp;&nbsp;&nbsp;&nbsp;新书小三先开通了,方便........”,这个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出来看看。

posted @ 2023-07-18 15:54  sbsdnyn  阅读(118)  评论(0编辑  收藏  举报