【发布时间】:2020-08-03 16:12:03
【问题描述】:
我对编程很陌生,所以我只是想写一个有趣的程序来做一些网页抓取。我和我的女朋友正在玩动物穿越,并正在尝试玩萝卜游戏。有一个网页,人们可以在其中列出岛上萝卜的价格。我想编写代码来抓取页面,确定每个人在卖多少铃铛,然后如果有人列出超过 500 个铃铛,然后通过文本或电子邮件通知我。
我在这里停留在第 1 步。
我想抓取页面的HTML,并使用它识别铃铛。我最初尝试使用 BS4,但发现由于页面是动态的并且使用了一些动态的 java 元素,我不得不改用 selenium。
这是我要识别的HTML:
<\div data-v-dee358f6="" class="flex flex-row items-center justify-self-center">
<\img data-v-dee358f6="" src="/img/turnip.0cf2478d.png" class="w-6 object-scale-down">
<\p data-v-dee358f6="" class="ml-2">73 Bells<\p>
<\div>
我想抓取 ml-2 类的任何内容,以便我可以提取列出钟声部分的代码。我使用以下基本代码尝试了各种方法来做到这一点:
#Turnip notifier
#Reads the island page on the turnip exchange and sends a text message when an island goes above 500 bells
from selenium.webdriver import Firefox
webdriver = 'C:\\path'
driver = Firefox(webdriver)
#Open up turnip.exchange URL
url = "https://turnip.exchange/islands"
driver.get(url)
element = driver.find_element_by_class_name('ml-2')
HTML = element.get_attribute('outerHTML')
print(HTML)
这将返回 HTML 但属于不同的类。然后我尝试了 CSS selector、xPATH 等...等...每个都表示没有元素。
然后我尝试拉取整个页面的HTML,只是为了看看我正在处理什么,所以我的代码现在看起来像这样:
#Turnip notifier
#Reads the island page on the turnip exchange and sends a text message when an island goes above 500 bells
from selenium.webdriver import Firefox
webdriver = 'C:\\path'
driver = Firefox(webdriver)
#Open up turnip.exchange URL
url = "https://turnip.exchange/islands"
driver.get(url)
HTML = driver.execute_script("return document.documentElement.outerHTML;")
print(HTML)
这会打印HTML,但不是针对页面,因为它看起来是实时的。它似乎主要是格式化之类的东西。因此,即使使用 Selenium 打开站点,我似乎仍然没有抓取出现在检查元素中的实时页面。
有什么想法吗?一旦我可以提取包含铃铛数量的代码,我很确定我知道从那里去哪里创建一个列表/字典和存储值,但我实际上找不到铃铛目前。
【问题讨论】:
标签: python html css selenium selenium-webdriver