[英]How to scrape specific information from javascript webpage by Selenium Python?
[英]How to scrape information off of a blog post via Selenium (Python)
我正在尝试网上博客: https ://blog.naver.com/ssamssam48/221271075217
我试图在上面的URL中获得博客的名称和博客的作者。 如果您进入源代码,则这部分都提供了这两种信息:
<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搜索时,它会说这样的元素不存在。
我认为问题的一部分可能是该职位的身体所有隐藏这个websection,说内#document
谁能帮我获得博客标题和作者姓名? 还有#document
中的#标签是什么意思?
要检索页面标题,即오사카스튜디오알뜰완전완전..:네이버블로그 ,博客名称(即용의주도미스고)和作者的名称(即(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为//frame[@id='mainFrame']
的期望帧可用,然后切换到该//frame[@id='mainFrame']
。
尽管在上一步中调用了URL https://blog.naver.com/ssamssam48/221271075217
,但一旦'document.readyState'
相等, 浏览器客户端 (即Web浏览器 )将把控件返回给WebDriver实例。达到"complete"
状态,仍然不保证网页上的所有WebElement (例如框架 , 按钮 )均已完成加载。 因此,为了专门等待所需帧的加载完成,我们引入了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
您可以修改上面的代码以获取script标记中定义的几乎所有js变量。
至于标题,运行print driver.title
返回
。사카스유니버셜완전...:네이버블로그
考虑到您当前在某个特定职位上,这看起来不错。 如果您想要博客的标题,请考虑导航到博客的主页并运行driver.title
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.