使用Python从文件中提取关键词搜索.pdf和.ppt文件

1 投票
1 回答
904 浏览
提问于 2025-04-17 21:46

我正在开发一个程序,用来在谷歌上搜索.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('&amp;sa=U&amp;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 )

这是我正在使用的代码。我尝试过使用beautiful soup库,但没有成功。

1 个回答

0

所以你是在手动搜索,也就是在程序里输入查询吗?

如果你是这样做的,那你已经快成功了。你只需要做一些基本的文件操作,别再传递用户输入的查询了,而是把文件中的每一行作为查询传递。

确保这些内容是字符串格式,比如 str(retrieved_data_from_file),如果有字典条目,可以像这样写 mydict = {'q' : "'"+str(retrieved_data_from_file)+"'" },最后记得关闭文件。

撰写回答