Excel中的搜索结果数

时间:2011-12-12 12:03:10

标签: excel vba web-scraping

给定一列字符串,我想找到每个字符串的网站(例如sciencedirect.com)的搜索结果数。现有答案Number of Google Results from Excel适用于Google。

不幸的是,此解决方案会从字符串中创建搜索网址,即Google搜索示例包含单词 example 。我想要使​​用的网站不这样做。

搜索示例会返回网址http://www.sciencedirect.com/science?_ob=ArticleListURL&_method=list&_ArticleListID=1860967815&_sort=r&_st=13&view=c&_acct=C000053194&_version=1&_urlVersion=0&_userid=1495569&md5=0ef30742e917da15236ef1824058a1db&searchtype=a

知道我是如何使用这种搜索引擎获得相同结果的。

1 个答案:

答案 0 :(得分:0)

单击“搜索”按钮时,您必须检查提交的表单。表单发送包含搜索词的GET请求,但随后您将被重定向到结果列表页面,结果页面的URL不再包含搜索词。

我已使用以下网址成功搜索“语料库”:

http://www.sciencedirect.com/science?_ob=QuickSearchURL&_method=submitForm&_acct=C000228598&_origin=home&_zone=qSearch&md5=61ce8901b141d527683913a240486ac4&qs_all=corpus

请注意,您需要做的是

  1. 下载首页http://www.sciencedirect.com/
  2. 从搜索表单中提取隐藏字段
  3. 汇总隐藏字段中的搜索网址
  4. 将您的搜索字词添加到qs_all字段
  5. 中的搜索网址
  6. 使用搜索网址发送GET请求
  7. 关注重定向
  8. 除了qs_all此网址中的所有其他字段都来自表单作为隐藏字段。 这是相应表单的来源,因为我下载了它(在发送“语料库”搜索请求之前)。

    <form name="qkSrch" method="get" target="_top" action="/science" style="margin:0px;">
    <input type="hidden" name="_ob" value="QuickSearchURL">
    <input type="hidden" name="_method" value="submitForm">
    <input type="hidden" name="_acct" value="C000228598">
    <input type="hidden" name="_origin" value="home">
    <input type="hidden" name="_zone" value="qSearch">
    <input type="hidden" name="md5" value="61ce8901b141d527683913a240486ac4">
    
    <table border="0" width="100%" cellpadding="0" cellspacing="0" style="margin: 0;">
    <tbody><tr valign="middle">
    
    <!-- Code related for toggling labels -->
    
       <td align="right"><label for="qs_all" id="fieldLabel">&nbsp;&nbsp;&nbsp;&nbsp;All fields</label></td>
       <td align="left"><input class="textbox qsinput xpstyle" type="text" name="qs_all" id="qs_all" value="" size="30" maxlength="450" title="For example: heart attack AND behavior?" tabindex="1"></td>
    
    
    
       <td align="right"><label for="qs_author">&nbsp;&nbsp;&nbsp;&nbsp;Author</label></td>
       <td align="left" colspan="5"><input class="textbox qsinput xpstyle" type="text" name="qs_author" id="qs_author" value="" size="33" maxlength="450" title="e.g. J S Smith or John Smith or Smith JS" tabindex="2" style="_width:100%"></td>
       <td nowrap="nowrap">
    
       </td><td></td><td></td>
       <td align="right" nowrap="nowrap" width="90%" valign="middle">
       <a href="/science?_ob=MiamiSearchURL&amp;_method=requestForm&amp;_btn=Y&amp;_acct=C000228598&amp;_version=1&amp;_urlVersion=1&amp;_userid=10&amp;md5=18a1082f74248d90d465ee65804fd7db" style="vertical-align:bottom;font-size:0.92em;">Advanced search</a>
       </td>
    </tr>
    <tr>
    
       <td align="right"><label for="qs_title">&nbsp;&nbsp;&nbsp;&nbsp;Journal/Book&nbsp;title</label></td>
       <td align="left"><input class="textbox qsinput xpstyle" type="text" id="qs_title" name="qs_title" value="" size="30" maxlength="450" title="For example: journal of molecular biology" tabindex="3"></td>
    
       <td align="right" class="toggleQukSrch2"><label for="qs_vol" id="volField">&nbsp;&nbsp;&nbsp;&nbsp;Volume</label></td>
       <td align="left" class="toggleQukSrch"><input class="textbox qsinput xpstyle" type="text" name="qs_vol" id="qs_vol" value="" size="3" maxlength="10" style="width:30px;" tabindex="4"></td>
       <td align="right" class="toggleQukSrch2"><label for="qs_issue" id="issueField">&nbsp;&nbsp;Issue</label></td>
       <td align="left" class="toggleQukSrch"><input class="textbox qsinput xpstyle" type="text" name="qs_issue" id="qs_issue" value="" size="3" maxlength="10" style="width:30px" tabindex="5"></td>
       <td align="right" class="toggleQukSrch2"><label for="qs_pages" id="pageField">&nbsp;&nbsp;Page</label></td>
       <td align="right" class="toggleQukSrch"><input class="textbox qsinput xpstyle" type="text" name="qs_pages" id="qs_pages" value="" size="3" maxlength="10" title="For example: 14-27" style="width:30px" tabindex="6"></td>
    
       <td align="right" nowrap="nowrap">
       <input class="button" id="submit_search" type="Submit" alt="Submit Quick Search" title="Submit Quick Search" value="Search ScienceDirect" tabindex="8" name="sdSearch">
       </td> 
    
    
    
     <td align="right" nowrap="nowrap" colspan="8" valign="bottom">
          <a class="icon_qmarkHelpsci_dir" href="/science?_ob=HelpURL&amp;_file=qs_tips.htm&amp;_acct=C000228598&amp;_version=1&amp;_urlVersion=0&amp;_userid=10&amp;md5=2bd779305b31602341744eaa786e2f0a" target="sdhelp" onmouseover="window.status='Help is Available';return true" onmouseout="window.status='';return true" onclick="var helpWin;helpWin=window.open('/science?_ob=HelpURL&amp;_file=qs_tips.htm&amp;_acct=C000228598&amp;_version=1&amp;_urlVersion=0&amp;_userid=10&amp;md5=2bd779305b31602341744eaa786e2f0a','sdhelp','scrollbars=yes,resizable=yes,directories=no,toolbar=no,menubar=no,status=no,width=760,height=570');helpWin.focus();return false" tabindex="9" style="font-size:0.92em;padding-right:0;">Search tips</a>
       </td>
       </tr>
    </tbody></table>
    </form>
    

    修改 续如何从结果页面中提取结果数量。

    你的假设是对的,你必须改变代码的其他部分,即提取结果数量的值。

    让我们坚持前面的例子。 从“语料库”搜索时,您会在结果页面的源代码中找到此行:

    <input type="hidden" name="TOTAL_PAGES" value="2836">
    

    并且您要提取2836.因此,您将搜索<input type="hidden" name="TOTAL_PAGES" value="之类的内容并在结束引号之前获取该次要值。

    我不会告诉你如何在VBA中编码,但它是基本的字符串操作,所以我希望你能处理它。