【发布时间】:2020-01-08 06:56:12
【问题描述】:
我正在尝试从网页中抓取数据,然后通过将 href 提取到下一页来转到下一页。
但是,在这种情况下,包含指向下一页的 href 的标记是 href='#next'。 在用 Chrome 检查这个元素时,当我将鼠标悬停在“#next”这个词上时,它似乎是一个向我显示完整 href 的超链接。
我怀疑一旦我提出请求并将其转换为这样的文本,href 就会丢失;
r = requests.get(url)
s = BeautifulSoup(r.text)
我使用findAll() 函数来获取我正在寻找的元素:
s.findAll('a', class_='pagenav')[5]
结果:
a href="#next" class="pagenav" title="next page" onclick="javascript:
document.pageForm.limitstart.value=20; document.pageForm.submit();return false;">
Next >
在这种情况下如何获取 href?
这是网站的链接
【问题讨论】:
-
您无法使用
hrefvalue 进行导航。因为它是javascriptsonclick 事件。但是,如果您的网址是公开的,您可以分享,以便 OP 可以帮助您。 -
JavaScript可以向该元素添加 url 但 BeautifulSoup 无法运行 JavaScript - 您可能需要Selenium来控制可以运行 JavaScript 的 Web 浏览器 -
如果此页面使用带有
pageForm的JavaScript,那么URL 可能位于<form action="url">标记中 -
@furas 我尝试使用 Selenium 导入 webdriver 来运行 Firefox(),然后使用 .execute_script("return document.documentElement.outerHTML") 来获取 javascript 后面的 html。但是我使用 .find('a', class_='pagenav') 得到了相同的结果。我确实注意到新的 html 中出现了新的 标签: class="prevLink",但是,它是 href='#'
-
如果您使用
Selenium,则使用Selenium查找<a class="pagenav">或<a title="next page">和.click()以加载下一页,您不必为此获取href.
标签: python beautifulsoup onclick href