Используйте cURL или wget с http POST, чтобы получить результаты поиска после первой страницы.

РЕДАКТИРОВАТЬ: у меня есть гораздо более конкретное представление о том, что я ищу сейчас, поэтому я переписываю весь вопрос.

Моя общая цель — перейти к результатам поиска после первой страницы (из сценария) на веб-странице http://www.ncbi.nlm.nih.gov/images. Используя расширение Firefox «Tamper Data», я просмотрел запросы, отправленные моим браузером, и обнаружил, что могу изменить запрос http POST, чтобы перейти на любую страницу результатов.

Теперь я хотел бы сделать это в сценарии. я пробовал оба

wget --post-data 'var1=foo&var2=bar&var3=...' http://www.ncbi.nlm.nih.gov/images

и

cURL --data 'var1=foo&var2=bar&var3=...' http://www.ncbi.nlm.nih.gov/images

и я попытался сделать первоначальный запрос на http://www.ncbi.nlm.nih.gov/images?term=INSERTSEARCHTERMHERE и сохранить файл cookie, а затем загрузить файл cookie при следующем запросе, на этот раз с данными POST, указывающими номер страницы. Это не работает. Каждый раз, когда я запрашиваю первый URL-адрес, я получаю домашнюю страницу для поиска изображений или страницу с заголовком «Изображения — обнаружена ошибка» без результатов поиска. Если я запрашиваю второй URL-адрес (заменяя INSERTSEARCHTERMHERE моим фактическим условием поиска), я всегда получаю первую страницу результатов, даже если я отправил данные POST, включая переменную, запрашивающую другую страницу. Кажется, их два - может быть, три? - переменные, обозначающие номер страницы:

EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_Pager.cPage=14
EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_Pager.CurrPage=14

а в Tamper Data это всегда текущая страница (та, на которой я был, когда делал запрос на новую страницу):

EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_Pager.cPage=1

(Да, в данных POST есть две переменные с одинаковыми именами - я не знаю, о чем это...??)

Итак, как я могу использовать cURL или wget в скрипте, чтобы получить доступ ко всем страницам результатов поиска? Спасибо за вашу помощь! (и спасибо комментаторам за помощь в прояснении вопроса!)

Дополнительная информация: существует множество полей POST, и я отправляю их все. Я скопировал это из записи Tamper Data:

Я просмотрел страницу, и кнопка «Далее» использует ссылку (тег привязки), которая содержит некоторые специальные атрибуты, а именно page=2. Затем это становится страницей = 3 по мере продвижения вперед. Это указывает вам в правильном направлении?


person andy    schedule 15.04.2011    source источник
comment
Спасибо. Я тоже это видел, но не знаю, как взаимодействовать с этой функцией page=num. Как бы я передал это в новый запрос? Нужно ли создавать http-запрос вручную? (Я никогда не делал этого раньше...)   -  person Tomas McGuinness    schedule 15.04.2011
comment
Я предполагаю, что здесь, но, похоже, вы могли бы отправить форму с желаемым номером страницы. На странице есть форма, которая передает переменную EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_Pager.cPage в URL-адрес /images. Вы можете попробовать эмулировать этот POST. Вы должны быть в состоянии найти расширение браузера, которое поможет вам в этом - посмотрите на эти вопросы некоторые указатели на расширения stackoverflow.com/questions/725998/   -  person andy    schedule 15.04.2011
comment
Вы не говорите, какой язык программирования вы используете. Perl, python и многие другие имеют большие библиотеки, предназначенные для подобных проблем. Добавьте тег для своего языка, и вероятность полезного ответа резко возрастет ;-) Удачи!   -  person Tomas McGuinness    schedule 15.04.2011
comment
@andy в данных о несанкционированном доступе, какой именно поиск вы выполняли, включая любые другие параметры, которые вы использовали?   -  person shellter    schedule 17.04.2011
comment
EntrezSystem2.PEntrez.ImagesDb.Images_SearchBar.SearchResourceList = & изображения EntrezSystem2.PEntrez.ImagesDb.Images_SearchBar.Term = препарат & EntrezSystem2.PEntrez.ImagesDb.Images_SearchBar.CurrDb = & изображения EntrezSystem2.PEntrez.ImagesDb.Entrez_PageController.PreviousPageName = Результаты & EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Images_DisplayBar. sPresentation = docsum & EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Images_DisplayBar.sPageSize = 20 & EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Images_DisplayBar.FileFormat = docsum & EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Images_DisplayBar.LastPresentation = docsum & EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Images_DisplayBar.Presentation = docsum&EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Images_DisplayBar.PageSize=20&EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Images_DisplayBar.LastPageSize=20&EntrezSystem2.PEntrez.ImagesDb.Images_SystemResultsPanel.Images_DisplayBar.Image_Dbrez.Format=&ntrez. sPanel.Images_DisplayBar.LastFormat = & EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_Pager.cPage = 14 & EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_Pager.CurrPage = 14 & EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_ResultsController.ResultCount = 38231 & EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel. Entrez_ResultsController.RunLastQuery = & EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_Pager.cPage = 1 & EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Images_DisplayBar.sPresentation2 = docsum & EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Images_DisplayBar.sPageSize2 = 20 & EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_MultiItemSupl. Discovery_SearchDetails.SearchDetailsTerm = препарат% 5BAll + Поля% 5D & EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.HistoryDisplay.Cmd = PageChanged & EntrezSystem2.PEntrez.DbConnector.Db = изображения и EntrezSystem2.PEntrez.DbConnector.LastDb = изображения & EntrezSystem2.PEntrez.DbConnector.Term = наркотик & EntrezSystem2.PEntrez. ДбКоннект or.LastTabCmd=&EntrezSystem2.PEntrez.DbConnector.LastQueryKey=1&EntrezSystem2.PEntrez.DbConnector.IdsFromResult=&EntrezSystem2.PEntrez.DbConnector.LastIdsFromResult=&EntrezSystem2.PEntrez.DbConnector.LinkName=&EntrezSystem2.PEntrez.DbConnector.LinkReadableName=&EntrezSystem2.PEntrez.DbConnector.LinkReadableName=&EntrezSystem2.PEntrez.DbConnector.LinkReadableName LinkSrcDb=&EntrezSystem2.PEntrez.DbConnector.Cmd=PageChanged&EntrezSystem2.PEntrez.DbConnector.TabCmd=&EntrezSystem2.PEntrez.DbConnector.QueryKey=&p%24a=EntrezSystem2.PEntrez. ImagesDb.Images_ResultsPanel.Entrez_Pager.cPage&p%24l=EntrezSystem2&p%24st=изображения   -  person Malcolm Jones    schedule 15.08.2013