如何通过Selenium(Python)从博客文章中获取信息

2024-10-02 12:34:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着写一个博客:https://blog.naver.com/ssamssam48/221271075217

我正试图在上面的网址上找到博客的名字和作者。如果您进入源代码,这部分提供了这两个信息:

<title>용의주도미스고의 행복만들기♪ : 네이버 블로그</title>
</head>
<script type="text/javascript" 
src="https://ssl.pstatic.net/t.static.blog/mylog/versioning/Frameset- 
584891086_https.js" charset="UTF-8"></script>

<script type="text/javascript" charset="UTF-8">
var photoContent="";
var postContent="";

var videoId       = "";
var thumbnail     = "";
var inKey         = "";
var movieFileSize = "";
var playTime      = "";
var screenSize    = "";

var blogId = 'ssamssam48';
var blogURL = 'https://blog.naver.com';
var eventCnt = '';

var g_ShareObject = {};
g_ShareObject.referer = "";

博客的名称在title标签中,作者的id在var blogId = 'ssamssam48。我目前正在通过Python使用Selenium,但是当我尝试brower.title时,我得到的是文章的标题,而不是源代码中显示的博客标题。至于作者的id,我完全不知道如何到达那些var部分

我也试着用另一种方式来处理这些信息,而不是看源代码,只看开发人员工具栏的元素部分。在这里,您可以在带有xpath//*[@id="blog-profile"]/div/div[2]的包装器中找到一个部分,其中包含关于作者的信息,但是当我通过Selenium搜索它时,它表示这样的元素不存在。你知道吗

我认为问题的一部分可能是帖子的主体都隐藏在这个说#document的websection中

enter image description here

有谁能帮我弄到这个博客的标题和作者的名字吗?还有#document中的标签是什么意思??你知道吗


Tags: httpscom信息id标题源代码titlevar
2条回答

检索页面标题오사카유니버셜스튜디오입장권알뜰구매완전。。您可以使用以下代码块:

  • 代码块:

    # -*- coding: UTF-8 -*-
    import sys,time
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver=webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
    driver.get("https://blog.naver.com/ssamssam48/221271075217")
    print(driver.title)
    WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//frame[@id='mainFrame']")))
    blogName = driver.find_element_by_xpath("//div[@class='nick']/strong").text
    print(blogName)
    blogAuthor = driver.find_element_by_xpath("//span[@class='itemfont col']").text
    print(blogAuthor)
    driver.quit()
    
  • 控制台输出:

    오사카 유니버셜스튜디오 입장권 알뜰 구매 완전.. : 네이버블로그
    용의주도미스고
    (ssamssam48)
    

更新

根据您在评论中提出的问题,我们通过WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//frame[@id='mainFrame']")))诱导了一个服务员,该服务员将等待所需的框架xpathAs //frame[@id='mainFrame']可用,然后切换到它。你知道吗

为什么要等画面?你知道吗

由于您在上一步中调用了url https://blog.naver.com/ssamssam48/221271075217,虽然浏览器客户端(即Web浏览器)将在'document.readyState'等于"complete"时将控件返回到WebDriver实例,但仍然不保证所有WebElements(例如frames),网页上的按钮)已完成加载。因此,为了特别等待所需帧的加载完成,我们引入了frame_to_be_available_and_switch_to_it()方法。你知道吗

详细讨论内容如下:

您可以使用execute_script方法直接执行此操作。你知道吗

driver.get('https://blog.naver.com/ssamssam48/221271075217')
print(driver.execute_script('return blogId'))

上面的代码打印出来

ssamssam48

您可以修改上面的代码,以获得脚本标记中定义的几乎所有js变量。你知道吗

至于标题,运行print driver.title返回

오사카 유니버셜스튜디오 입장권 알뜰 구매 완전.. : 네이버블로그

考虑到你现在在一个特别的岗位上,这看起来是对的。如果您想要博客的标题,可以考虑导航到博客的主页并运行driver.title

相关问题 更多 >

    热门问题