我使用charset=iso-8859-1
curl
)
curl "webpage_URL" > site.txt
我的终端的编码是utf-8
。在这里,我尝试查看此文件的编码:
file -i site.txt
site.txt: regular file
现在:奇怪的是:如果我用nano
打开文件,我会找到普通浏览器中可见的所有单词。但是当我使用时:
cat site.txt
缺少一些单词。这个事实让我感到好奇,经过几个小时的研究后我才弄清楚原因。
在python中,它找不到所有单词:
def function(url):
p = subprocess.Popen(["curl", url], stdout=subprocess.PIPE)
output, err = p.communicate()
print output
soup=BeautifulSoup(output)
return soup.body.find_all(text=re.compile('common_word'))
我也尝试使用urllib2
,但我没有成功。
我做错了什么?
答案 0 :(得分:0)
如果有人会遇到同样的问题:
我的问题的根源是网页中存在的一些回车字符(\r
)。终端无法打印它们。这不会是一个大问题,但会跳过包含\r
的整行。
因此,为了查看整个文件的内容:应使用-v
或-e
选项转义此字符:
cat -v site.txt
(感谢MendiuSolves建议使用cat命令选项)
为了解决部分python问题:我将返回值从soup.body.find_all(text=re.compile('common_word'))
更改为soup.find_all(text=re.compile('common_word'))
很明显,如果您搜索的单词位于包含\r
的行之一,您将打印它,您将看不到结果。解决方案可以是过滤字符,也可以将内容写入文件中。