【发布时间】:2020-09-09 22:20:34
【问题描述】:
我正在尝试解析 https://www.tandfonline.com/toc/icbi20/current 以获取所有文章的标题。 HTML 分为 Volumes 和 Issues。每个卷都有一个对应于一个月的问题。因此,对于第 36 卷,将有 12 个问题。在当前卷(37)中有 4 个问题,我想解析每个问题并获取每个文章的名称。
要完成此操作并自动执行搜索,我需要获取每个问题的 href 链接。最初我选择了父母的divid:id = 'tocList'。
import requests
from bs4 import BeautifulSoup, SoupStrainer
chronobiology = requests.get("https://www.tandfonline.com/toc/icbi20/current")
chrono_coverpage = chronobiology.content
issues = SoupStrainer(id ='tocList')
issues_soup = BeautifulSoup(chrono_coverpage, 'html.parser', parse_only = issues)
for issue in issues_soup:
print(issue)
这将返回一个 bs4 对象但,仅包含来自卷 div 的 href 链接。更糟糕的是,这个div 应该包含卷div 和问题div。
所以,我决定尝试减少我的搜索空间并使其更具体,并选择包含问题 href 链接的 div 链接 (class_='issues')
这一次木星会想一想,但不会返回任何东西。只是空白。没有。芝宝。 但是如果我问返回了什么类型的“无”,jupiter 会告知它是“String”???我只是不知道该怎么做。
所以,首先我有一个问题,为什么问题div 元素不响应解析?
当我尝试运行print(BeautifulSoup(chrono_coverpage, 'html.parser').prettify()) 时,同样的情况会发生,问题div 不会出现(当html 页面上的Inspect Element 立即出现在最终卷span 下方时):
所以我怀疑它一定是面向 javascript 的,而不是面向 HTML 的。或者class = 'open' 可能与此有关。
任何澄清将不胜感激。另外,如何通过 Javascripted 链接解析来获取它们?
【问题讨论】:
标签: python selenium web-scraping beautifulsoup