我试图通过网络搜索博客: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 = "";
博客的名称位于标题标记内,作者的ID位于var blogId = 'ssamssam48
中。我目前正在通过Python与Selenium合作,但是当我尝试brower.title
时,我得到了帖子的标题,但没有得到博客的标题,如源代码所示。至于作者的身份证,我完全不知道如何到达那些var
部分
我还尝试以不同的方式处理信息 - 而不是查看源代码,只需查看开发人员工具栏的元素部分。在这里,您可以在包装器中找到包含xpath //*[@id="blog-profile"]/div/div[2]
的部分,其中包含有关作者的信息,但是当我通过Selenium搜索它时,它说这样的元素不存在。
我认为问题的一部分可能是帖子的主体全部隐藏在这个显示#document
任何人都可以帮助我获得博客的标题和作者的名字吗?另外#document
中的#标签是什么意思?
答案 0 :(得分:1)
检索页面标题即오사카유니버셜튜오오오.. .. .. .. .. .. .. .. .. .. .. .. ..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, >和作者姓名即(ssamssam48)您可以使用以下代码块:
代码块:
# -*- 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']")))
,我们引发了一位服务员,该服务员将等待 xpath 所需的框架为{{1} }可用然后切换到它。
虽然您已在上一步调用了网址//frame[@id='mainFrame']
,但浏览器客户端(即网络浏览器)会将控件返回到<一旦https://blog.naver.com/ssamssam48/221271075217
等于 'document.readyState'
,就会实现em> WebDriver 实例,它仍然不会占用所有 WebElements (例如,网页上的框架,按钮)已完成加载。因此,为了特定地等待所需帧的加载完成,我们引发了"complete"
方法。
您将在以下网址找到详细讨论:
答案 1 :(得分:0)
您可以使用execute_script
方法直接执行此操作。
driver.get('https://blog.naver.com/ssamssam48/221271075217')
print(driver.execute_script('return blogId'))
上面的代码打印
ssamssam48
您可以修改上面的代码,以获得脚本标记中定义的几乎所有js变量。
至于标题,运行print driver.title
返回
오사카유니버셜스튜디오입장권알뜰구매완전..:네이버블로그
考虑到您目前正在使用特定帖子,这看起来正确。如果您想要博客的标题,请考虑导航到博客的主页并运行driver.title