我正在尝试使用Python网络抓取工具从具有定期更新文本的页面中提取文本

时间:2020-06-27 21:39:05

标签: javascript python html css

首先我要说的是,我是一个完全的新手,几乎不知道他在做什么。

我正在尝试使用网络抓取工具从一个页面中提取4对数字,在单独的页面上修改时数字会发生变化(我无法使用该页面从中提取数据)并将其发送到文本文档在我的电脑上。当我拉html源代码时,文本根本就不存在(可以更新或更改的元素都不是)。

使用检查元素查看时看起来像这样 <div id="openpages"> ==$0 <span class="thisnotes"> ***example text***</span> <div/>

,并且在查看页面源代码或将信息提取到pycharm中时使用 <div id='openpages'></div>

再次,我实际上不知道我在做什么,但是我认为这是因为页面使用JavaScript知道何时需要更新<span class="thisnotes"> 如果这是一个头脑麻木的愚蠢问题,或者堆栈溢出不是正确的选择,我深表歉意。任何帮助都将不胜感激!

1 个答案:

答案 0 :(得分:0)

检查DOM通常会发现一些问题。您不能使用“ find_element_by_class_name”吗?

您可以链接到该网站吗?

编辑:我能够通过使用以下代码获取文本: 编辑:完整的代码为清楚起见:

#! python3

# These two lines import Selenium webdriver and Options
from selenium import webdriver
from selenium.webdriver.firefox.options import Options

# These lines tell browser open links in new tabs (personal preference)
opts = Options()
opts.set_preference("browser.link.open_newwindow.restriction", 0)
opts.set_preference("browser.link.open_newwindow", 3)

# This line defines the browser
browser = webdriver.Firefox(options=opts)

# This line loads the website
browser.get('https://app.roll20.net/campaigns/journal/6581887/handout/-MAhsToCYmASlnZzZJST')

# These lines are explained below
digits = browser.find_element_by_class_name('thisnotes')
output = digits.get_attribute('innerText')
print(output)

此代码按类名称查找元素,并将其分配给我命名为“ digits”的变量。然后,我们使用“ get_attribute”获取“ innerText”属性中的所有内容,并将其分配给名为“ output”的变量。

如果您查看DOM属性,这将更加有意义。为此,您可以在元素(站点上的那些数字)上单击鼠标右键(或按住Control键单击以获取OSX),然后选择“检查元素”。它将向您显示突出显示span类的HTML。然后,您右键单击或按住Control单击它,然后选择“显示DOM属性”。当我进入那里时,它向我显示了类名称=“ thisnotes”

我通常不使用class_name,更经常使用xpath或css_selector。