繁体   English   中英

如何通过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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM