来自网页的cURL,cat,python和缺少的部分

时间:2014-04-25 10:40:45

标签: python curl encoding cat

我使用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,但我没有成功。

我做错了什么?

1 个答案:

答案 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的行之一,您将打印它,您将看不到结果。解决方案可以是过滤字符,也可以将内容写入文件中。