【问题标题】:How web scrape with request, Bs4 when there is a script result?当有脚本结果时,如何使用请求进行网页抓取,Bs4?
【发布时间】:2018-10-22 23:39:33
【问题描述】:

我正在尝试从该网站获取一些数据:

http://www.espn.com.br/futebol/resultados/_/liga/BRA.1/data/20181018

当我在浏览器上检查页面时,我可以在 HTML 上看到我需要的所有值。我想获取游戏结果和玩家姓名(对于每个日期,在本例中为 2018-10-18)

在没有比赛日网站显示:

“Sem jogos nesta data”,在浏览器检查中很容易找到:

但是在使用的时候

url = 'http://www.espn.com.br/futebol/resultados/_/liga/todos/data/20181018'
page = requests.get(url, "lxml")

输出基本上是我找不到短语“Sem jogos nesta data”的网站

如何获取包含脚本结果的 HTML?有要求可以吗? urllib?

【问题讨论】:

  • 正如alican 所说,页面源中不存在 text/div 。它在页面加载后由 JavaScript 加载并注入 DOM。如果您“查看源代码”而不是“检查”,您将在执行任何 JavaScript 之前看到原始文档。

标签: python web-scraping request


【解决方案1】:

看起来您要查找的数据来自他们的后端 API。我会使用selenium-python 包而不是requests

示例如下:

driver = webdriver.Firefox()
driver.get("http://www.espn.com.br/futebol/resultados/_/liga/todos/data/20181018")
value = driver.find_elements(By.XPATH, '//*[@id="events"]/div')
drive.close()

我没有检查代码,但它应该可以工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 2019-03-12
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    相关资源
    最近更新 更多