使用BeautifulSoup和/或Selenium浏览html树

时间:2018-09-11 19:46:48

标签: python-3.x selenium beautifulsoup

我刚刚开始使用BeautifulSoup,一开始就遇到了障碍。我查阅了类似的帖子,但没有找到解决我特定问题的解决方案,或者有些根本性的问题我不了解。我的目标是从此页面中提取日语单词及其英语翻译和示例。

https://iknow.jp/courses/566921

并将它们保存在dataFrame或csv文件中。

我能够看到解析后的输出和一些标签的内容,但是每当我尝试用自己感兴趣的类请求某些内容时,都不会得到任何结果。首先,我想获取日语单词的列表,并且我认为我应该可以做到:

import urllib
from bs4 import BeautifulSoup

url = ["https://iknow.jp/courses/566921"]
data = []
for pg in url:
 r = urllib.request.urlopen(pg)
soup = BeautifulSoup(r,"html.parser")
soup.find_all("a", {"class": "cue"})

但是当我搜索响应字段时,我什么也没得到:

responseList = soup.findAll('p', attrs={ "class" : "response"})
for word in responseList:
    print(word)

我试图通过找到孩子来使树下移,但找不到想要的文字。感谢您的帮助。这是我要提取的字段:

fields I'm trying to extract

在jxpython的大力帮助下,我现在遇到了一个新的挑战(也许这应该是一个新线程,但是它很相关,所以在这里也许还可以)。我的目标是创建一个数据框或一个csv文件,每行包含一个日语单词,翻译和带音译的示例。使用以下方式创建列表:

driver.find_elements_by_class_name()
driver.find_elements_by_xpath()

我得到的元素数量不同的列表,因此不可能轻松地创建一个数据框。

# len(cues) 100
# len(responses) 100
# len(transliterations)279 stramge number because some words don't have transliterations
# len(texts) 200
# len(translations)200

音译列表包含单个单词和句子的音译组合。我认为,要获取内容以填充数据框的第一行,我将需要遍历

<li class="item">

content(xpath?#/ html / body / div 2 / div / div / section / div / section / div / div / ul / li 1),并针对每个提取单词翻译,句子和音译...我不确定这是否是最好的方法...

例如,我希望在数据框的第一行(从屏幕快照中突出显示的框中)具有的信息是:

行く,いく,去,日曜日は図书馆に行きます。,にちようびとしょかんいきます。,周日我去图书馆。 summerにールにいった。,暑假期间我去了游泳池。

enter image description here

1 个答案:

答案 0 :(得分:1)

您要抓取的标签不在源代码中。可能是因为页面是JavaScript呈现的。试试这个网址看看自己:

查看源:https://iknow.jp/courses/566921

Python模块Selenium解决了此问题。如果您愿意,我可以为您编写一些代码。

下面是一些代码:

function main() {
    getPosition().then(function(response){
        return response;
    });
}

console.log(main());

注意:您首先需要安装Web驱动程序。我选择铬。 这里是一个链接:https://chromedriver.storage.googleapis.com/index.html?path=2.41/。还要将此添加到您的路径中! 如果您还有其他问题,请通知我!