Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python -沃尔玛的Web抓取

Python -沃尔玛的Web抓取
EN

Stack Overflow用户
提问于 2021-04-18 13:06:45
回答 2查看 391关注 0票数 1

我正在尝试使用Python和BeautifulSoup bs4Walmart获取一些数据。

简单地说,我编写了一个获取所有类别名称的代码,这是可行的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests
from bs4 import BeautifulSoup

baseurl = 'https://www.walmart.com/'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}

r = requests.get('https://www.walmart.com/all-departments')

soup = BeautifulSoup(r.content, 'lxml')

sub_list = soup.find_all('div', class_='alldeps-DepartmentNav-link-wrapper display-inline-block u-size-1-3')

print(sub_list)

问题是,当我尝试使用下面的代码从这个link获取值时,我得到的结果是空的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests
from bs4 import BeautifulSoup

baseurl = 'https://www.walmart.com/'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}

r = requests.get('https://www.walmart.com/browse/snacks-cookies-chips/cookies/976759_976787_1001391')

soup = BeautifulSoup(r.content, 'lxml')

general_list = soup.find_all('a', class_='product-title-link line-clamp line-clamp-2 truncate-title')

print(general_list)

当我搜索旧的文档时,我只看到SerpApi解决方案,但它是付费解决方案,所以有什么方法可以获得值吗?还是我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-19 12:14:31

这里有一个很好的Selenium教程:https://selenium-python.readthedocs.io/getting-started.html#simple-usage

我为您编写了一个简短的脚本作为入门指南。您只需下载chromedriver(Chromium)并将其放入path。对于Windows,chromedriver将有.exe分辨率

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome(executable_path='/snap/bin/chromium.chromedriver')
driver.get("https://www.walmart.com/browse/snacks-cookies-chips/cookies/976759_976787_1001391")
assert "Walmart.com" in driver.title
wait = WebDriverWait(driver, 20)
wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".product-title-link.line-clamp.line-clamp-2.truncate-title>span")))

elems = driver.find_elements_by_css_selector(".product-title-link.line-clamp.line-clamp-2.truncate-title>span")
for el in elems:
    print(el.text)
driver.close()

我的输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Lance Sandwich Cookies, Nekot Lemon Creme, 8 Ct Box
Nature Valley Biscuits, Almond Butter Breakfast Biscuits w/ Nut Filling, 13.5 oz
Pepperidge Farm Soft Baked Strawberry Cheesecake Cookies, 8.6 oz. Bag
Nutter Butter Family Size Peanut Butter Sandwich Cookies, 16 oz
SnackWell's Devil's Food Cookie Cakes 6.75 oz. Box
Munk Pack Protein Cookies, Variety Pack, Vegan, Gluten Free, Dairy Free Snacks, 6 Count
Great Value Twist & Shout Chocolate Sandwich Cookies, 15.5 Oz.
CHIPS AHOY! Chewy Brownie Filled Chocolate Chip Cookies, 9.5 oz
Nutter Butter Peanut Butter Wafer Cookies, 10.5 oz
Nabisco Sweet Treats Cookie Variety Pack OREO, OREO Golden & CHIPS AHOY!, 30 Snack Packs (2 Cookies Per Pack)
Archway Cookies, Soft Dutch Cocoa, 8.75 oz
OREO Double Stuf Chocolate Sandwich Cookies, Family Size, 20 oz
OREO Chocolate Sandwich Cookies, Party Size, 25.5 oz
Fiber One Soft-Baked Cookies, Chocolate Chunk, 6.6 oz
Nature Valley Toasted Coconut Biscuits with Coconut Filling, 10 ct, 13.5 oz
Great Value Duplex Sandwich Creme Cookies Family Size, 25 Oz
Great Value Assorted Sandwich creme Cookies Family Size, 25 oz
CHIPS AHOY! Original Chocolate Chip Cookies, Family Size, 18.2 oz
Archway Cookies, Crispy Windmill, 9 oz
Nabisco Classic Mix Variety Pack, OREO Mini, CHIPS AHOY! Mini, Nutter Butter Bites, RITZ Bits Cheese, Easter Snacks, 20 Snack Packs
Mother's Original Circus Animal Cookies 11 oz
Lotus Biscoff Cookies, 8.8 Oz.
Archway Cookies, Crispy Gingersnap, 12 oz
Great Value Vanilla Creme Wafer Cookies, 8 oz
Pepperidge Farm Verona Strawberry Thumbprint Cookies, 6.75 oz. Bag
Absolutely Gluten Free Coconut Macaroons
Sheila G's Brownie Brittle GLUTEN-FREE Chocolate Chip Cookie Snack Thins, 4.5oz
CHIPS AHOY! Peanut Butter Cup Chocolate Cookies, Family Size, 14.25 oz
Great Value Lemon Sandwich Creme Cookies Family Size, 25 oz
Keebler Sandies Classic Shortbread Cookies 11.2 oz
Nabisco Cookie Variety Pack, OREO, Nutter Butter, CHIPS AHOY!, 12 Snack Packs
OREO Chocolate Sandwich Cookies, Family Size, 19.1 oz
Lu Petit Ecolier European Dark Chocolate Biscuit Cookies, 45% Cocoa, 5.3 oz
Keebler Sandies Pecan Shortbread Cookies 17.2 oz
CHIPS AHOY! Reeses Peanut Butter Cup Chocolate Chip Cookies, 9.5 oz
Fiber One Soft-Baked Cookies, Oatmeal Raisin, 6 ct, 6.6 oz
OREO Dark Chocolate Crme Chocolate Sandwich Cookies, Family Size, 17 oz
Pinwheels Pure Chocolate & Marshmallow Cookies, 12 oz
Keebler Fudge Stripes Original Cookies 17.3 oz
Pepperidge Farm Classic Collection Cookies, 13.25 oz. Box
票数 2
EN

Stack Overflow用户

发布于 2021-04-18 13:12:45

这是因为网站是动态渲染的。因此,在显示产品之前,javascript首先需要运行。因此,您需要在某个地方运行javascript (bs不能做到这一点),请看一下selinium库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67148905

复制
相关文章
满足 Google Play 目标 API 等级 (targetSdkLevel) 的要求
从 2018 年 8 月起,所有向 Google Play 提交的新应用都必须针对 Android 8.0 (API 等级 26) 开发。2018 年 11 月起,所有 Google Play 的现有应用更新同样必须针对 Android 8.0。 Android 每次版本更新都会作出变更,显著提升应用安全性以及性能并改善整体用户体验。其中部分变更仅适用于那些通过 manifest 文件中的 targetSdkVersion 属性 (即目标 API 等级) 明确指出支持新版 API 行为的应用。 请将您的应用
Android 开发者
2018/05/31
8.7K0
一起看 I/O | Android 开发工具最新更新
作者 / Juan Sebastian Oviedo, Senior Product Manager
Android 开发者
2022/09/01
9K0
一起看 I/O | Android 开发工具最新更新
SDK开发经验之版本
本来想在周末写完,结果周末打扰,到现在才开始。要加班了,不然写不完。…… 任何产品都有迭代,有周期,有版本,版本是一个阶段工作的里程碑和产出。 ​ 对于应用开发者,更新版本可能是件很开心的事,因为说明在不断的优化和改进。然而对于SDK开发者来说,对于版本更新的感觉却是复杂的,开心又心塞。 开心是因为又修复了不少问题,或者出了新的功能,做了新的优化。但是更多的是多版本维护带来的压力和成本。SDK一个版本的生命周期并不像应用那么短,而且他带来的问题的影响也会更久远。 本来想和关于版本号的那篇一起写完,发现有点多
子勰
2018/05/22
1.9K0
如何停止一个正在运行的线程?
停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作。停止一个线程可以用Thread.stop()方法,但最好不要用它。
Java技术栈
2020/02/26
1.9K0
Google 的 Firebase 如何删除项目
https://www.ossez.com/t/google-firebase/13792
HoneyMoose
2021/11/02
3.2K0
Google 的 Firebase 如何删除项目
微信JS-SDK签名接口的使用与开发
最近诸事缠身好久没有写文章了。前不久将与微信公众号有关的一些知识点进行了梳理,微信公众号开发过程中,用最多的就是微信js-sdk了。但是使用微信js-sdk需要获取签名、时间戳、随机字符串,等等一系列的参数,那问题就来了,这些参数是由后端提供能,还是前端自己获得呢?当然是先由后端获,然后向前端工程师提供一个接口,只不过这个接口返回的是jsapi_ticket还是计算好的签名signature,这个就得由前后端工程师协商了,一般为了方便,我的做法是直接返回计算好的签名。
挥刀北上
2019/07/19
7.6K0
微信JS-SDK签名接口的使用与开发
Firebase 如何创建登录 Token
Firebase 的 token 可以使用 firebase 命令行工具来进行创建。
HoneyMoose
2021/04/02
2.5K0
Firebase 如何创建登录 Token
应用上云2小时烧掉近50万,创始人:差点破产,简直噩梦
简介:本文讲述了我们在首款产品上市之前就差点破产、最后幸存下来并从中汲取教训的故事。
CloudBest
2021/03/12
42.8K0
应用上云2小时烧掉近50万,创始人:差点破产,简直噩梦
使用NVIDIA SDK Manager定制您自己的Jetson系统
如果您是一位使用NVIDIA Jetson开发套件的开发者,您可能已经熟悉NVIDIA SDK Manager。这是一个强大的工具,简化了NVIDIA JetPack SDK的安装过程,让您可以快速设置开发环境,并立即开始项目。但是,您是否知道SDK Manager现在提供了更多的灵活性和定制化选项?让我们深入了解详情,探索如何根据您的特定需求定制安装过程。
GPUS Lady
2023/08/08
7040
使用NVIDIA SDK Manager定制您自己的Jetson系统
微信JS-SDK的使用
通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。
越陌度阡
2020/11/26
16.9K0
腾讯警告:你的声音正在被AI「偷走」
近日,腾讯朱雀实验室受邀参加全球顶级信息安全峰会 CanSecWest 2021,并进行了题为《The Risk of AI Abuse: Be Careful with Your Voice(AI 被滥用的风险:小心您的声音安全》的分享。腾讯朱雀实验室分享的最新研究成果表明,VoIP 电话劫持与 AI 语音模拟技术的结合将带来极大潜在风险。
机器之心
2021/04/21
6620
腾讯警告:你的声音正在被AI「偷走」
面试官:如何停止一个正在运行的线程?
如何停止一个线程?如果你悄悄问问你同事,70% 的人可能回答不出来。今天我们在一起复习一下,如何停止一个线程!
业余草
2021/12/06
1.1K0
停止使用非版本控制的可执行代码
一般来说,人们会在local_settings.py文件中加入一些配置变量,然后加入到.gitignore里面。因此,本地开发环境,你的项目需要一个脱离版本控制的可执行代码文件。
py3study
2020/01/16
6130
完全停止Oracle中正在运行的JOB
源地址:http://www.quest-pipelines.com/newsletter-v4/0403_C.htm
用户1148526
2019/05/25
1.6K0
如何在低版本SDK调用高版本API?
随着Android SDK版本不断的迭代更新,在新的SDK上总是会出现让人眼前一亮非常方便好用的API。但是这些新的API呢在低版本的SDK上是没有的,所以当我们的minSdkVersion的版本低于新API所在的版本时,我们直接使用新API在编译时会出现报错。如果只是想解决编译报错的问题呢,Android给我们提供了两种注解的方式避免编译时报错:
吴延宝
2018/09/10
5K1
firebase怎么用_firebase是什么
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168361.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/20
4.2K0
firebase怎么用_firebase是什么
如何打造一款标准的 JS SDK ?
岳鹰全景监控,是阿里UC官方出品的先进移动应用线上监控平台,为开发者及企业提供一套完整的移动应用线上质量监控解决方案。岳鹰WEB前端监控,可实时监控页面性能、JS异常、资源加载异常、API成功率、自定义错误等异常情况。本文通过岳鹰前端监控SDK的实际案例,介绍如何基于JavaScript来开发SDK,并分享一些设计原则以及实现技巧。
ConardLi
2021/04/07
1.3K0
如何打造一款标准的 JS SDK ?
Javascript实现计数器,定时警告和停止
1 <html> 2 <head> 3 <meta charset="utf-8"> 4 <title>定时警告</title> 5 </head> 6 <body> 7 <!
别先生
2017/12/29
9210
Javascript实现计数器,定时警告和停止
腾讯一面:如何停止一个正在运行的线程?
停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作。停止一个线程可以用Thread.stop()方法,但最好不要用它。虽然它确实可以停止一个正在运行的线程,但是这个方法是不安全的,而且是已被废弃的方法。在java中有以下3种方法可以终止正在运行的线程:
一行Java
2023/02/23
9320
腾讯一面:如何停止一个正在运行的线程?
js停止setInterval 调用
setInterval()返回一个interval ID,您可以将其传递给clearInterval():
IT工作者
2022/01/18
13.8K0

相似问题

警告:看起来您正在使用Firebase JS的开发构建

63

如何修复Firebase警告“您正在使用Firebase的开发版本”

113

警告:“看起来您正在使用Firebase的开发构建。”

11

警告“看起来您正在使用Firebase JS SDK的开发构建”,并在角火基应用程序中进行了警告

12

如何避免Firebase警告我正在使用开发版本?

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文