Количество результатов поиска из Excel - PullRequest
0 голосов
/ 12 декабря 2011

Учитывая столбец строк, я хотел бы найти количество результатов поиска с веб-сайта (например, sciencedirect.com) для каждой строки. Существующий ответ Количество результатов Google из Excel хорошо работает для Google.

К сожалению, это решение создает поисковый URL из строки, то есть поиск Google для пример содержит слово пример . Сайты, которые я хочу использовать, этого не делают.

Поиск по пример возвращает URL 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 голосов
/ 12 декабря 2011

Вам нужно будет проверить форму, которую вы отправляете, когда нажимаете на кнопку Поиск.Форма отправляет запрос GET, который содержит условия поиска, но затем вы перенаправляетесь на страницу списка результатов, а URL страницы результатов больше не содержит условия поиска.

Я успешно выполнил поиск"корпус" с этим 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. собрать поисковый URL из скрытых полей
  4. добавить ваш поисковый запрос к поисковому URL в поле qs_all
  5. отправить запрос GET с помощьюURL поиска
  6. следуйте перенаправлению

За исключением qs_all все остальные поля в этом URL поступают из формы как скрытые поля.Это источник соответствующей формы, как я ее скачал (перед отправкой поискового запроса "corpus"):

<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>

EDIT Продолжение с Как извлечь количество результатовсо страницы результатов.

Ваше предположение верно, вам придется изменить другие части кода, а именно, чтобы извлечь значение числа результатов.

Давайте придерживаться предыдущего примера.При поиске из "corpus" вы найдете следующую строку в источнике страницы результатов:

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

И вы захотите извлечь 2836. Следовательно, вы будете искать что-то вроде <input type="hidden" name="TOTAL_PAGES" value=" и получитепоследующее значение перед закрывающей кавычкой.

Я не собираюсь рассказывать вам, как кодировать в VBA, но это базовая манипуляция со строками, поэтому я надеюсь, что вы справитесь с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...