【发布时间】:2015-02-14 14:20:16
【问题描述】:
如何使用漂亮的汤来浏览结果的所有页面。例如我必须抓取这个网站:
http://www.ncbi.nlm.nih.gov/pubmed
搜索查询是
"((oncology) AND Breast cancer) AND 结果为"
不带引号。
如何获取所有页面?我尝试在请求标头中查看表单数据。尝试修改一些字段。我可以修改它以获得每页 200 个条目。但没有了。我实际上需要遍历页面以获取所有内容。
任何帮助将不胜感激。
假设现在,我只想看看第 4 页。
代码的相关部分:
post_params = {
'term' : val,
'EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_DisplayBar.PageSize' : 20,
'EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_DisplayBar.sPageSize' : 20,
'coll_start' : 61,
'citman_count' : 20,
'citman_start' : 61,
'coll_start2' : 61,
'citman_count2' : 20,
'citman_start2' : 61,
'CollectionStartIndex': 1,
'CitationManagerStartIndex' : 1,
'CitationManagerCustomRange' : 'false',
'EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Entrez_Pager.cPage' : 3,
'EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Entrez_Pager.CurrPage' : 4,
}
"""This part handles the scraping business"""
post_args = urllib.urlencode(post_params)
baseurl = 'http://www.ncbi.nlm.nih.gov'
url = 'http://www.ncbi.nlm.nih.gov/pubmed/'
page = urllib2.urlopen(url, post_args)
page = page.read()
soup = BeautifulSoup(page)
soup.prettify()
它仍然获取第一页。一旦这部分成功,我就会考虑迭代这段代码,每次都改变参数。
【问题讨论】:
-
你应该添加你的代码
-
@PadraicCunningham 我已经添加了代码。
-
您无法查看
'EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Entrez_Pager.CurrPage' : 4并执行 xrange(1, n) 并使用结果而不是 4?? -
@akira 假设我只想看第 4 页。我目前没有迭代。只是试图获取具有给定页码的页面。
-
您获取一页。如果你想获取更多:获取更多。我不明白你的问题。
标签: python beautifulsoup biopython