【问题标题】:Web Scraping with bs4 pyhton3. Cant find elementsWeb Scraping with bs4 python 3. 找不到元素
【发布时间】:2020-09-29 07:12:28
【问题描述】:

我目前正在 python3 中尝试 BeautifulSoup(bs4)。

当我去打印汤或酱汁时,我正在寻找的元素不存在。

我在酱/汤中找不到此表的代码(请参见表网站的屏幕截图)。

这是我的代码:

import bs4 as bs
import requests

r = requests.get("https://www.flashscore.com/field-hockey/netherlands/hoofdklasse/standings/")

soup = bs.BeautifulSoup(r.text,'lxml')

print(soup) # or i print r.text -> the sauce

任何帮助将不胜感激。如果可能,请您解释任何建议。

【问题讨论】:

  • 常见问题:页面使用 JavaScript 添加项目但 BSrequests 无法运行 JavaScript。您可能需要Selenium 来控制可以运行 JavaScript 的真实网络浏览器。或者您可以在 Firefox/Chrom 中使用 DevTools(选项卡:网络,过滤器:XHR)来查找 JavaScript 用于从服务器获取数据的 url,然后您可以将此 url 与 requests 一起使用。

标签: python beautifulsoup


【解决方案1】:

非常非常常见的问题:页面使用JavaScript 添加项目但BSrequests 无法运行JavaScript

您可以使用Selenium 来控制可以运行JavaScript 的真实Web 浏览器,并使用Selenium 函数搜索数据或从Selenium (driver.page_source) 获取HTML 并使用BS

或者您可以在Firefox/Chrome(标签:Network,过滤器:XHR)中使用DevTools 来查找JavaScript 用于从服务器获取数据的url,然后您可以使用它带有requests 的网址。


使用 DevTools 我找到了 url 并获得了带有表格的 HTML。

它需要标头'X-Fsign' 来获取数据而不是带有消息401 Unauthorized 的HTML

我不知道这个标头是否总是具有相同的值。如果不是,则需要更多研究才能在 HTML 或 Cookie 中找到此值。

import requests
import bs4 as bs

url = 'https://d.flashscore.com/x/feed/ss_1_INmPqO86_GOMWObX1_table_overall'

headers = {
#    'User-Agent': 'Mozilla/5.0'
#    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:79.0) Gecko/20100101 Firefox/79.0',
#    'X-Referer': 'https://www.flashscore.com/field-hockey/netherlands/hoofdklasse/standings/',
    'X-Fsign': 'SW9D1eZo',
#    'X-Requested-With': 'XMLHttpRequest',
#    'Referer': 'https://d.flashscore.com/x/feed/proxy-local',
}

r = requests.get(url, headers=headers)

soup = bs.BeautifulSoup(r.text, 'lxml')

for item in soup.find_all('span', class_='team_name_span'):
    print(item.text)

结果:

Bloemendaal
Den Bosch
HGC
Rotterdam
Kampong
Oranje Rood
Amsterdam
Pinoke
Tilburg
Klein Zwitserland
Hurley
Almere

【讨论】:

  • 嘿@furas,请您概述一下您是如何在开发工具中找到该网址的?
猜你喜欢
  • 2022-12-26
  • 1970-01-01
  • 2017-12-21
  • 2018-07-25
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多