首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网络搜索pubmeds 2.,3.,4...页面

网络搜索pubmeds 2.,3.,4...页面
EN

Stack Overflow用户
提问于 2019-07-13 02:16:20
回答 1查看 415关注 0票数 1

尝试网络刮PubMed,但我需要通过“页面2”,我不太确定是什么类型的代码。

所以,我看过这个链接:Web Scraping - Get to Page 2

我很确定它有答案,只是我不知道在我的情况下如何实现它。使用什么变量以及发送什么。

所有其他关于网络抓取和PubMed的帖子都是关于不同的事情。

我的代码:

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup

params = {
    'name': "EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_Pager.Page",
    'title': "Next page of results",
    'class': "active page_link next",
    'href': "#",
    'sid': 3,
    'page': 3,
    'accesskey': "k",
    'id': "EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_Pager.Page"
}

page_link = 'https://www.ncbi.nlm.nih.gov/pubmed/?term=emergency+nurse+AND+pain'
page_response = requests.get(page_link, timeout=5, params=params)
page_content = BeautifulSoup(page_response.content, "html.parser")

print(page_content)

“下一步”按钮调用的代码(这是来自第2页的代码):

代码语言:javascript
复制
<a name="EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_Pager.Page" title="Next page of results" class="active page_link next" href="#" sid="3" page="3" accesskey="k" id="EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_Pager.Page">Next &gt;</a>

its a part of all of this:

<div class="title_and_pager">
            <div><h2>Search results</h2><h3 class="result_count left">Items: 201 to 400 of 367719</h3><span id="result_sel" class="nowrap"></span><input name="EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_ResultsController.ResultCount" sid="1" type="hidden" id="resultcount" value="367719" /><input name="EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_ResultsController.RunLastQuery" sid="1" type="hidden" /></div>
            <div class="pagination"><a name="EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_Pager.Page" title="First page of results" class="active page_link" href="#" sid="1" page="1" id="EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_Pager.Page">&lt;&lt; First</a><a name="EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_Pager.Page" title="Previous page of results" class="active page_link prev" href="#" sid="2" page="1" accesskey="j" id="EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_Pager.Page">&lt; Prev</a><h3 class="page"><label for="pageno">Page </label><input name="EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_Pager.cPage" id="pageno" type="text" class="num" sid="1" value="2" last="1839" /> of 1839</h3><a name="EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_Pager.Page" title="Next page of results" class="active page_link next" href="#" sid="3" page="3" accesskey="k" id="EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_Pager.Page">Next &gt;</a><a name="EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_Pager.Page" title="Last page of results" class="active page_link" href="#" sid="4" page="1839" id="EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_Pager.Page">Last &gt;&gt;</a><input name="EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_Pager.CurrPage" sid="1" type="hidden" value="2" /></div>
        </div>    

很明显,我可以从“第一页”中抓取所有内容,但我需要抓取所有页面。我只需要一个关于如何设置i的提示,而不是整个代码都完美地工作。我知道你们有更重要的事要做。

EN

回答 1

Stack Overflow用户

发布于 2020-09-09 04:52:08

我注意到你正在尝试阅读的网站在它的URL中有一个模式。对于每个页面,URL更改为page=NUMBER。因此,第一个页面的URL为:

"https://www.ncbi.nlm.nih.gov/pubmed/?term=emergency+nurse+AND+pain

我发现这是相同的链接:

"https://pubmed.ncbi.nlm.nih.gov/?term=emergency%20nurse%20AND%20pain&page=1

第2页的URL为:

"https://pubmed.ncbi.nlm.nih.gov/?term=emergency%20nurse%20AND%20pain&page=2

诸若此类。您可以遍历85页,并用一个简单的for循环扫描每一页:

代码语言:javascript
复制
import requests

for i in range(84):
    response = requests.get(url="https://pubmed.ncbi.nlm.nih.gov/?term=emergency%20nurse%20AND%20pain&page=" + str(i + 1))
    # read page...

如果你有任何问题,请告诉我!我希望我能帮到你!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57012196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档