尝试网络刮PubMed,但我需要通过“页面2”,我不太确定是什么类型的代码。
所以,我看过这个链接:Web Scraping - Get to Page 2
我很确定它有答案,只是我不知道在我的情况下如何实现它。使用什么变量以及发送什么。
所有其他关于网络抓取和PubMed的帖子都是关于不同的事情。
我的代码:
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页的代码):
<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 ></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"><< 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">< 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 ></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 >></a><input name="EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Pubmed_Pager.CurrPage" sid="1" type="hidden" value="2" /></div>
</div> 很明显,我可以从“第一页”中抓取所有内容,但我需要抓取所有页面。我只需要一个关于如何设置i的提示,而不是整个代码都完美地工作。我知道你们有更重要的事要做。
发布于 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循环扫描每一页:
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...如果你有任何问题,请告诉我!我希望我能帮到你!
https://stackoverflow.com/questions/57012196
复制相似问题