我目前正在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
任何帮助将不胜感激。请您尽可能解释任何建议。
答案 0 :(得分:1)
一个非常常见的问题:页面使用JavaScript
添加项目,但是BS
和requests
无法运行JavaScript
。
您可以使用Selenium来控制真正的Web浏览器,该浏览器可以运行JavaScript
并使用Selenium函数搜索数据或从Selenium中获取HTML(driver.page_source)并使用BS
。
或者您可以在DevTools
/ Firefox
中使用Chrome
(标签:Network
,过滤器:XHR
)查找{{1} }从服务器获取数据,然后可以将此网址与JavaScript
一起使用。
我使用requests
找到了url并通过表获取HTML。
它需要标头DevTools
来获取数据,而不是带有消息'X-Fsign'
的HTML
我不知道此标头是否始终具有相同的值。如果不是这样,则需要更多的研究才能在HTML或Cookies中找到此值。
401 Unauthorized
结果:
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)