python - 即使屏幕刮板的路径正确,列表也会返回空
问题描述
所以我试图从 Ubisoft 网站上的免费游戏网站获取所有 url,但它总是返回空。我不知道我在这里做错了什么,下图显示了路径
headers = {
"User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0",
}
result = requests.get("https://free.ubisoft.com/", headers=headers)
soup = BeautifulSoup(result.content, 'lxml')
print(result.content)
urls = []
urls = soup.find('div', {'class': 'free-events'}).find_all("a")
for url in urls:
link = url.attrs['data-url']
if "https" in link:
links.append(link)
return links
解决方案
数据是动态加载的,因此如果您打印,result.content
您会看到只有一些简单的 HTML 和 Javascript。
使用 Selenium,您可以加载页面并检索链接,如下所示:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
browser = webdriver.Chrome(chrome_options=options)
browser.get("https://free.ubisoft.com/")
for link in browser.find_elements_by_css_selector("div.free-event-button a[data-type='freegame']"):
print(link.get_attribute("data-url"))
# https://register.ubisoft.com/aco-discovery-tour
# https://register.ubisoft.com/acod-discovery-tour
# https://register.ubisoft.com/might_and_magic_chess_royale
# https://register.ubisoft.com/rabbids-coding
推荐阅读
- javascript - 为什么使用 google oauath isSignedIn,listen()?
- python - 当子句卡住时,pyspark big
- python - 手动插入框架设置滚动条不起作用 tkinter
- javascript - 按内容查找 div
- reactjs - React - 找不到模块 - 好像目录不存在
- xamarin.forms - MonoAndroid90 的指定语言目标缺失。确保为“MonoAndroid”安装了正确的工具
- java - 应该为“serialVersionUID”分配什么值?
- go - 仅输入类型的函数签名(无变量)
- linux - 如何从tail输出grep并包含文件名?
- pytorch - 为什么torchvision 预训练模型比从零训练的模型表现更好?