python - 为什么在python中进行网络抓取时我一直没有得到
问题描述
这是我写的代码。我看了很多教程,但他们用完全相同的代码得到了输出
import requests
from bs4 import BeautifulSoup as bs
url="https://shop.punamflutes.com/pages/5150194068881408"
page=requests.get(url).text
soup=bs(page,'lxml')
#print(soup)
tag=soup.find('div',class_="flex xs12")
print(tag)
我总是一无所获。班级名称也很奇怪。视图源代码具有与检查元素不同的东西
解决方案
这不是 bs4 问题,它正确解析了requests
返回的内容。它取决于网页本身
如果您检查“汤”,您将看到页面的来源是一组指向在页面上呈现内容的脚本的链接。为了执行这些脚本,您需要有一个浏览器 - 请求只会让您获得网络服务器返回的内容,但不会为您执行 javascript。您可以通过在浏览器的开发人员工具中停用 javascript 来验证这一点。
解决方案是使用网络浏览器(例如无头 chrome + chromedriver)和 Selenium 来控制它。有很多关于如何做到这一点的好教程。
推荐阅读
- c# - IWorkbook.SaveToStream 抛出 System.IndexOutOfRangeException
- intellij-idea - 无法在运行控制台 Intellij 中查看全部信息
- python - 如何在 google_auth_oauthlib 中呈现自定义 return_uri
- css - 如何将令牌添加到 URL 以运行 CSS 文件?[django]
- javascript - input type=file 有没有办法只在手机上调用原生专辑?
- token - 有没有办法像在主网上一样向 solana devnet 添加令牌信息?
- python - 无法多次使用雪管摄取数据
- android - com.android.build.gradle.LibraryExtension_Decorated 不能转换为 (.....).BaseExtension
- node.js - Nestjs this.minioClientService.upload 不是函数
- javascript - 如何保存 Firebase 云消息传递令牌?