【发布时间】:2021-10-01 12:52:54
【问题描述】:
我正在尝试从this 网站上抓取一些抽认卡,但我遇到了一些问题。在我的代码的 sn-p 下面:
# point to the right link and chapter
url_main = r'https://learninglink.oup.com/access/content/neuroscience-sixth-edition-student-resources/neuroscience-6e-chapter-1-flashcards?previousFilter=tag_chapter-'
chapter = '01'
url_main = url_main + chapter
# get source
html = requests.get(url_main).text
bs = BeautifulSoup(html, features="html.parser")
如果我在 Chrome 上检查页面,我可以看到我要查找的信息在 class="box1text" 中。所以我这样做:
# get class
text = bs.find(class_ = "box1text" )
但是,当我打印这个“文本”变量时,我得到:
<span aria-live="assertive" class="box1text"></span>
并且没有提及我要查找的文本。我做错了什么?
另外,我想知道如何与这个容器及其按钮进行交互,但我什至不知道从哪里开始。我的理想输出将是一个包含所有关键字和相关答案的字典(因此,每个抽认卡的正面和背面),但要做到这一点,我需要能够与这个容器进行交互。有关如何执行此操作的任何建议?
提前致谢!
【问题讨论】:
-
现代页面使用 JavaScript 添加元素,但
BeautifulSoup无法运行 JavaScript,您可能需要 Selenium 来控制可以运行 JavaScript 的真实网络浏览器 - 但这工作(非常)慢 - 但是代码可以像普通人一样交互。或者您应该使用@hidden_machine 描述的方法 - 它可能比正常抓取更快。
标签: python html web-scraping beautifulsoup