代码正在运行并插入但我在命令提示符下遇到错误'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
。网址中的标签会产生问题。我该如何解决?
答案 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;可能被解释为另一个命令的开始。 (如果是这种情况,我希望您收到的错误不仅仅是“标签”。)