首页 > 解决方案 > 为什么在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)

我总是一无所获。班级名称也很奇怪。视图源代码具有与检查元素不同的东西

标签: pythonhtmlparsingweb-scrapinglxml

解决方案


这不是 bs4 问题,它正确解析了requests返回的内容。它取决于网页本身

如果您检查“汤”,您将看到页面的来源是一组指向在页面上呈现内容的脚本的链接。为了执行这些脚本,您需要有一个浏览器 - 请求只会让您获得网络服务器返回的内容,但不会为您执行 javascript。您可以通过在浏览器的开发人员工具中停用 javascript 来验证这一点。

解决方案是使用网络浏览器(例如无头 chrome + chromedriver)和 Selenium 来控制它。有很多关于如何做到这一点的好教程。


推荐阅读