gpt4 book ai didi

javascript - 使用 Python、BeautifulSoup 进行动态数据 Web 抓取

转载 作者:行者123 更新时间:2023-11-28 05:12:46 24 4
gpt4 key购买 nike

我正在尝试从 HTML 中提取许多页面的数据(数字)。每个页面的数据都不同。当我尝试使用 soup.select('span[class="pull-right"]') 它应该给我号码,但只有标 checkout 现。我相信这是因为网页中使用了 Javascript。 180,476 是这个特定 HTML 中的数据位置,我希望它用于许多页面:

<div class="legend-block--body">
<div class="linear-legend--counts">
Pageviews:
<span class="pull-right">
180,476
</span>
</div>
<div class="linear-legend--counts">
Daily average:
<span class="pull-right">
8,594
</span>
</div></div>

我的代码(这是一个循环,适用于许多页面):

res = requests.get(wiki_page, timeout =None)
soup = bs4.BeautifulSoup(res.text, 'html.parser')
ab=soup.select('span[class="pull-right"]')
print(ab)

输出:

[<span class="pull-right">\n<label class="logarithmic-scale">\n<input 
class="logarithmic-scale-option" type="checkbox"/>\n Logarithmic scale
</label>\n</span>, <span class="pull-right">\n<label class="begin-at-
zero">\n<input class="begin-at-zero-option" type="checkbox"/>\n Begin at
zero </label>\n</span>, <span class="pull-right">\n<label class="show-
labels">\n<input class="show-labels-option" type="checkbox"/>\n Show
values </label>\n</span>]

示例网址:https://tools.wmflabs.org/pageviews/?project=en.wikipedia.org&platform=all-access&agent=user&range=latest-20&pages=Star_Wars:_The_Last_Jedi

我想要浏览量

最佳答案

如果您使用 requests.get 检索页面,则不会执行 javascript 代码。因此应改用 Selenium 。它会在浏览器中打开页面时模仿用户喜欢的行为,因此将执行 js 代码。

要开始使用 selenium,您需要使用 pip install selenium 安装。然后使用下面的代码检索您的项目:

from selenium import webdriver

browser = webdriver.Firefox()
# List of the page url and selector of element to retrieve.
wiki_pages = [("https://tools.wmflabs.org/pageviews/?project=en.wikipedia.org&platform=all-access&agent=user&range=latest-20&pages=Star_Wars:_The_Last_Jedi",
".summary-column--container .legend-block--pageviews .linear-legend--counts:first-child span.pull-right"),]
for wiki_page in wiki_pages:
url = wiki_page[0]
selector = wiki_page[1]
browser.get(wiki_page)
page_views_count = browser.find_element_by_css_selector(selector)
print page_views_count.text
browser.quit()

注意:如果您需要运行 headless 浏览器,请考虑使用 PyVirtualDisplay (Xvfb 的包装器)以运行 headless WebDriver 测试,请参阅“How do I run Selenium in Xvfb?” ' 了解更多信息。

关于javascript - 使用 Python、BeautifulSoup 进行动态数据 Web 抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51984646/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com