我正在开发一个程序,可以对.pdf和.ppt文件执行谷歌搜索。目前我在我的程序中手动将关键字作为输入。我想要做的是对.pdf和.ppt文件执行自动搜索。
假设我有包含关键字的file.txt:
python
android
parser
我希望我的程序能够逐个自动获取这些关键字并搜索.pdf和.ppt文件。
import urllib2
import urllib
import json as m_json
def getgoogleurl(search,siteurl=False):
if siteurl==False:
return 'http://www.google.com/search?q='+urllib2.quote(search)+'&oq='+urllib2.quote(search)
else:
return 'http://www.google.com/search?q=site:'+urllib2.quote(siteurl)+'%20'+urllib2.quote(search)+'&oq=site:'+urllib2.quote(siteurl)+'%20'+urllib2.quote(search)
def getgooglelinks(search,siteurl=False):
#google returns 403 without user agent
headers = {'User-agent':'Mozilla/11.0'}
req = urllib2.Request(getgoogleurl(search,siteurl),None,headers)
site = urllib2.urlopen(req)
data = site.read()
site.close()
start = data.find('<div id="res">')
end = data.find('<div id="foot">')
if data[start:end]=='':
#error, no links to find
return False
else:
links =[]
data = data[start:end]
start = 0
end = 0
while start>-1 and end>-1:
#get only results of the provided site
if siteurl==False:
start = data.find('<a href="/url?q=')
else:
start = data.find('<a href="/url?q='+str(siteurl))
data = data[start+len('<a href="/url?q='):]
end = data.find('&sa=U&ei=')
if start>-1 and end>-1:
link = urllib2.unquote(data[0:end])
data = data[end:len(data)]
if link.find('http')==0:
links.append(link)
return links
keyword1 =raw_input('Enter the keyword as keyword+filetype: \n eg:python filetype:pdf' )
links = getgooglelinks(keyword1,'http://www.google.com/')
for link in links:
print link
query = raw_input ( 'Query: ' )
query = urllib.urlencode ( { 'q' : query } )
response = urllib.urlopen ( 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&' + query ).read()
json = m_json.loads ( response )
results = json [ 'responseData' ] [ 'results' ]
for result in results:
title = result['title']
url = result['url']
print ( title + '; ' + url )
这是我正在处理的代码。我尝试过使用漂亮的汤库;但它不起作用。
答案 0 :(得分:0)
所以你在输入程序的查询时手动搜索?
如果这就是你在做什么那么你几乎就在那里。您只需要执行一些基本的文件操作,而不是传递用户插入的查询,您将传递文件中的每一行作为查询。
确保它是字符串格式,例如str(retrieved_data_from_file)
,字典条目也可能像mydict = {'q' : "'"+str(retrieved_data_from_file)+"'" }
然后关闭文件。