选项卡未被识别为内部或外部命令错误?

时间:2014-03-19 08:54:15

标签: python

代码正在运行并插入但我在命令提示符下遇到错误'tab' is not recognised as an internal or external command,operable program or batch file

我做错了什么,我该如何解决? 这是python代码:

updatedb.py

import sqlite3 as db
import urllib
import re
import sys
url=sys.argv[1]
htmltext=urllib.urlopen(url).read()
regex='<title>(.+?)</title>'
pattern=re.compile(regex)
title= re.findall(pattern,htmltext)
print title[0]
id="1"
conn=db.connect('insertlinks.db')
cursor=conn.cursor()
with conn:
    cursor.execute('insert into records (id,keyword) values(?,?)',(id,title[0]))
#print "inserted"
#conn.close()

上面的代码调用如下:

import urlparse
import os
import urllib
from bs4 import BeautifulSoup
url="http://www.google.com"
urls=[url]
visited=[url]
try:
    while len(urls)>0:
        htmltext=urllib.urlopen(urls[0]).read()
        soup=BeautifulSoup(htmltext)
        urls.pop(0)
        for tag in soup.findAll('a',href=True):
            tag['href']=urlparse.urljoin(url,tag['href'])
            if tag['href'] not in urls and tag['href'] not in visited:
                os.system("python scraper/insertlinks.py %s"  % (tag['href']))
                os.system("python scraper/updatedb.py %s" % (tag['href']))
                urls.append(tag['href'])
                visited.append(tag['href'])
except:
    print 'error in 1'

编辑: 问题出在tag['href']。它的值是http://maps.google.co.in/maps?hl=en&tab=il。网址中的标签会产生问题。我该如何解决?

2 个答案:

答案 0 :(得分:2)

使用subprocess.call()方法代替os.system()

&amp;在网址中是导致问题的原因。

在Windows上:

Command1 & Command2

表示运行Command1然后运行Command2

答案 1 :(得分:0)

您收到的错误是Windows错误,而不是Python错误。不知何故,你的一个或两个os.system调用正在传递&#34; tab&#34;作为Windows命令行的命令。

我怀疑这是因为google.com页面上的许多网址都有?tab = Wx或&amp; tab = wT或其他类似的参数添加到网址上。的?不应该伤害任何东西,但&amp;可能被解释为另一个命令的开始。 (如果是这种情况,我希望您收到的错误不仅仅是“标签”。)