我不确定用于点击“显示更多”按钮的代码。我想得到一份正在做某些话题的大学名单。以下是其中一个网站
http://www.sciencedirect.com/science/article/
你的帮助将得到真正的赞赏
谢谢
答案 0 :(得分:2)
你不应该用Python模拟一个真实的"点击" "显示更多"按钮来完成网页抓取。
"显示更多"网站中的按钮通常与某些JavaScript相关联,这些JavaScript要么在HTML中显示隐藏元素(请参阅Bootstrap's collapse
class以获取典型示例),要么触发对某些Web服务(例如REST API)的请求要插入DOM。
无论哪种方式,您都可以抓取这些数据。对于前者,在DOM中查找隐藏元素(查看页面的源[Ctrl + U
]并搜索HTML [Ctrl + F
]),并使用典型的网络编写工具。对于后者,请使用像Google Dev Tools这样的东西。单击“#34;显示更多"然后尝试用Python复制该请求。
在您给出的具体示例中,您希望的数据显示为HTML <script>
标记作为JSON对象。在HTML中搜索单词&#34; affiliation&#34;。
答案 1 :(得分:1)
您必须选择其他工具才能按下按钮。一种可能的解决方案是Selenium,它可以告诉浏览器按下按钮。以下示例单击显示更多按钮。
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def executeTest():
global driver
driver.get('http://www.sciencedirect.com/science/article/pii/S2211926417300024')
time.sleep(7)
element = driver.find_element_by_xpath('//*[@id="app"]/div/div/div/section/div/div[2]/article/div[2]/button')
element.click()
time.sleep(3)
def startWebDriver():
global driver
options = Options()
options.add_argument("--disable-infobars")
driver = webdriver.Chrome(chrome_options=options)
if __name__ == "__main__":
startWebDriver()
executeTest()
driver.quit()
答案 2 :(得分:0)
通过阅读上面的迈克尔·克伦肖的回答,我刚遇到一个类似的问题。这是对我有用的东西:
您现在应该在网络标签中看到发出请求的确切网址。如果您在页面加载之前不打开网络选项卡,这会容易得多。这样,选项卡中的唯一信息就是单击“显示更多信息”时发出的请求。
然后我在代码中添加了几行,如下所示:
page_source = response.text
if "Show More" in page_source:
然后,在此之后,我在其上添加了我的抓取功能,以使其遍历url结构。 https://blog.scrapinghub.com/2016/06/22/scrapy-tips-from-the-pros-june-2016上有一篇很好的文章,介绍了如何在网上抓取。
希望这会有所帮助。