将cURL或wget与httppost一起使用,以在第一页之后访问搜索结果

将cURL或wget与httppost一起使用,以在第一页之后访问搜索结果,curl,search,command-line,wget,Curl,Search,Command Line,Wget,编辑:我对我现在要找的东西有一个更具体的想法,所以我正在写整个问题 我的总体目标是从网页上的脚本中获取第一页之后的搜索结果。使用Firefox扩展篡改数据,我检查了我的浏览器发送的请求,发现我可以修改http POST请求以访问结果的任何页面 现在我想在一个脚本中实现这一点。我两个都试过了 wget --post-data 'var1=foo&var2=bar&var3=...' http://www.ncbi.nlm.nih.gov/images 及 我尝试过向发出初始请求并

编辑:我对我现在要找的东西有一个更具体的想法,所以我正在写整个问题

我的总体目标是从网页上的脚本中获取第一页之后的搜索结果。使用Firefox扩展篡改数据,我检查了我的浏览器发送的请求,发现我可以修改http POST请求以访问结果的任何页面

现在我想在一个脚本中实现这一点。我两个都试过了

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

我尝试过向发出初始请求并保存一个cookie,然后在下次请求时加载cookie,这次使用POST数据指示页码。它不起作用。每当我请求第一个URL时,我都会得到用于图像搜索的主页,或者我会得到一个标题为Images的页面-遇到错误,没有搜索结果。如果我请求第二个URL,用我的实际搜索词替换INSERTSEARCHTERMHERE,我总是会得到结果的第一页,即使我发送了包含一个变量的POST数据,要求使用不同的页面。好像有两个-也许三个表示页码的变量:

EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_Pager.cPage=14
EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_Pager.CurrPage=14
在篡改数据中,这始终是当前页面,即我请求新页面时所在的页面:

EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_Pager.cPage=1
是的,POST数据中有两个同名变量-我不知道这是关于什么的

那么,如何在脚本中使用cURL或wget来访问搜索结果的所有页面呢?谢谢你的帮助!感谢评论帮我澄清这个问题

其他信息: 这里有大量的POST字段,我正在发送它们。我从篡改数据记录中复制了以下内容:


EntrezSystem2.PEntrez.ImagesDb.Images\u SearchBar.SearchResourceList=Images&EntrezSystem2.PEntrez.ImagesDb.Images\u SearchBar.Term=drug&EntrezSystem2.PEntrez.Images\u SearchBar.CurrDb=Images&EntrezSystem2.PEntrez.ImagesDb.Entrez\u PageController.PreviousPageName=results&EntrezSystem2.PEntrez.ImagesDb.Images\u ResultsPanel.Images\u DisplayBar.sPresentation=docsum&EntrezSystem2.PEntrez.ImagesDb.Images\u ResultsPanel.Images\u DisplayBar.sPageSize=20&EntrezSystem2.PEntrez.Images\u ResultsPanel.Images\u DisplayBar.FileFormat=docsum&EntrezSystem2.PEntrez.Images\u ResultsPanel.Images\u DisplayBar.Presentation=docsum&EntrezSystem2.PEntrez.ImagesDb.Images\u ResultsPanel.Images\u DisplayBar.PageSize=20&EntrezSystem2.PEntrez.Images\u ResultsPanel.Images\u DisplayBar.LastPageSize=20&EntrezSystem2.PEntrez.Images\u ResultsPanel.Images\u DisplayBar.Format=&EntrezSystem2.PentrezSystems.PEntrez.Images\u DisplayBarystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_Pager.cPage=14&EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_Pager.CurrPage=14&EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_结果控制器.ResultsCounter=38231;&EntrezSystem2.PEntrez.ImagesDb.Images结果控制器magesDb.Images\u ResultsPanel.Entrez\u Pager.cPage=1&EntrezSystem2.PEntrez.ImagesDb.Images\u ResultsPanel.Images\u DisplayBar.sPresentation2=docsum&EntrezSystem2.PEntrez.ImagesPanel.Images\u DisplayBarields%5D&EntrezSystem2.PEntrez.ImagesDb.Images\u ResultsPanel.historycdisplay.Cmd=PageChanged&EntrezSystem2.PEntrez.DbConnector.Db=Images&EntrezSystem2.PEntrez.DbConnector.LastDb=Images&EntrezSystem2.PEntrez.DbConnector.Term=drug&EntrezSystem2.PEntrez.DbConnector.LastTabCmd=&EntrezSystem2.PEntrez.DbConnector.LastQueryKey=1&EntrezSystem2.pentrezsystemz.DbConnector.IdsFromResult=&EntrezSystem2.PEntrez.DbConnector.LastIdsFromResult=&EntrezSystem2.PEntrez.DbConnector.LinkName=&EntrezSystem2.PEntrez.DbConnector.LinkReadableName=&EntrezSystem2.PEntrez.DbConnector.LinkSrcDb=&EntrezSystem2.PEntrez.DbConnector.Cmd=PageChanged&EntrezSystem2.PentrezSystem2.PEntrez.DbConnector.TabCmd=&EntrezSystem2.PentrezSystem2.PEntrez.DbConnector.QueryKey=&p%24a=EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_Pager.cPage&p%24l=EntrezSystem2&p%24st=Images

我查看了页面,下一步按钮使用了包含一些特殊属性的链接锚标记,即page=2。然后,当您继续前进时,它将变为第3页。这是否为你指明了正确的方向?谢谢。我也看到了,但我不知道如何与page=num功能交互。我如何将其传递到新请求中?我需要手动创建http请求吗?我以前从来没有这样做过……我在这里猜测,但似乎你可以提交一份带有你想要的页码的表格。页面上有一个表单将名为EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_Pager.cPage的变量传递到URL/Images。你可以试着模仿t
帽柱。您应该能够找到一个浏览器扩展来帮助您实现这一点-查看这些问题,了解一些关于扩展的指针,您没有说明您使用的是什么编程语言。Perl、python和许多其他语言都有大型库专门用于解决这类问题。为你的语言添加一个标签,有用答案的概率将显著增加;-祝你好运@andy在tamper data中,包括您使用的任何其他选项在内,您所做的确切搜索是什么?
EntrezSystem2.PEntrez.ImagesDb.Images_ResultsPanel.Entrez_Pager.cPage=1