首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么我的CSS选择器不能处理漂亮的汤,而是作为一个铬控制台查询工作得很好?

为什么我的CSS选择器不能处理漂亮的汤,而是作为一个铬控制台查询工作得很好?
EN

Stack Overflow用户
提问于 2019-05-30 00:04:53
回答 2查看 1.6K关注 0票数 3

我有一个css选择器,当在chrome JS控制台中执行它时工作得很好,但是在一个例子中运行它时不能工作,但是在另一个示例上运行它时却不能工作(我无法区分两者之间的区别)。

代码语言:javascript
运行
AI代码解释
复制
url_1 = 'https://www.amazon.com/s?k=bacopa&page=1'
url_2 = 'https://www.amazon.com/s?k=acorus+calamus&page=1'

在chrome控制台中执行这两个查询时,以下查询都能很好地工作。

代码语言:javascript
运行
AI代码解释
复制
document.querySelectorAll('div.s-result-item') 

然后通过漂亮汤运行这两个urls,这就是我得到的输出。

url_1 (works)

代码语言:javascript
运行
AI代码解释
复制
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'}
r = requests.get(url_1, headers=headers)
soup = BeautifulSoup(r.content, 'html.parser')
listings = soup .select('div.s-result-item')
print(len(listings))

产出: 53 (正确)

url_2 (不工作)

代码语言:javascript
运行
AI代码解释
复制
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'}
r = requests.get(url_2, headers=headers)
soup = BeautifulSoup(r.content, 'html.parser')
listings = soup.select('div.s-result-item')
print(len(listings))

产出:0(不正确-预期: 49)

有人知道这里可能发生了什么吗?我怎样才能让css选择器与美丽的汤一起工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-30 04:58:00

我想是html。将解析器更改为“lxml”。为了提高效率,您还可以将css选择器缩短为类,并重用与Session对象的连接。

代码语言:javascript
运行
AI代码解释
复制
import requests
from bs4 import BeautifulSoup as bs

urls = ['https://www.amazon.com/s?k=bacopa&page=1','https://www.amazon.com/s?k=acorus+calamus&page=1']

with requests.Session() as s:
    for url in urls:
        r = s.get(url, headers = {'User-Agent' : 'Mozilla/5.0'})
        soup = bs(r.content, 'lxml')
        listings = soup.select('.s-result-item')
        print(len(listings))
票数 1
EN

Stack Overflow用户

发布于 2019-05-30 00:36:02

尝试selenium library下载网页

代码语言:javascript
运行
AI代码解释
复制
from selenium import webdriver
from bs4 import BeautifulSoup

url_1 = 'https://www.amazon.com/s?k=bacopa&page=1'
url_2 = 'https://www.amazon.com/s?k=acorus+calamus&page=1'

#set chrome webdriver path
driver = webdriver.Chrome('/usr/bin/chromedriver')

#download webpage
driver.get(url_2)

soup = BeautifulSoup(driver.page_source, 'html.parser')
listings = soup.find_all('div',{'class':'s-result-item'})

print(len(listings))

O/P:

代码语言:javascript
运行
AI代码解释
复制
url_1: 50

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

https://stackoverflow.com/questions/56374167

复制
相关文章
Backbonejs如何在events中传递参数
最近在用Backbonejs做个应用,至于是啥应用大家可以先猜测下,猜中无奖。这次实践应该比之前学习todos那个东西更具有实际意义。其中遇到一个问题,就是如何在event中给函数传递参数。
the5fire
2019/02/28
1.9K0
美好“如祺”而至,安全如影随形
昨天,网约车家族又迎来了一个新成员 —— 如祺出行。 这个由广汽与腾讯等合作方联手打造的共享出行产品,将在广州正式推出市场,以粤港澳大湾区为核心逐步向全国推广,计划一年内开拓5个城市,投放近一万辆新能源车型。 腾讯拿出了用户服务和营销、车联网和平台运营、地图和云服务、生态服务和安全五大核心能力,支持如祺出行。安全能力作为其他四大能力的基石,对出行平台的业务发展至关重要。腾讯安全在如祺出行上也拿出了一整套的解决方案,涵盖安全咨询、应用安全、风控安全,从战略视角帮助如祺出行构建全面的安全体系。 那么
腾讯安全
2019/09/16
1.5K0
美好“如祺”而至,安全如影随形
HTML中传递和引用JavaScript变量
http://ivantian2008.blog.51cto.com/622133/1127456
明哥的运维笔记
2019/01/30
5.6K0
【Shell编程】快速入门变量、字符串、传递参数
Shell 是一个用 C 语言编写的程序,通过 Shell 用户可以访问操作系统内核服务。
陶然同学
2023/02/24
1.3K0
【Shell编程】快速入门变量、字符串、传递参数
开发 | 如何在小程序页面之间,传递数据和变量?
最近组里开发小程序,遇到了一个困扰前端很长时间的话题:页面之间,如何传递数据和变量?
知晓君
2018/08/01
1.1K0
开发 | 如何在小程序页面之间,传递数据和变量?
Python中如何通过引用传递变量
问: 参数是按引用传递还是按值传递? 我如何通过引用传递,以便下面的代码输出 'Changed' 而不是 'Original'? class PassByReference: def __in
程序熵
2023/09/25
2120
Python中如何通过引用传递变量
如何在 Swift 中自定义操作符
很少有Swift功能能和使用自定义操作符的一样产生如此多的激烈辩论。虽然有些人发现它们真的有用,可以降低代码冗余,或实施轻量级语法扩展,但其他人认为应该完全避免它们。
Swift社区
2021/11/26
1.2K0
威而鲨(WireShark)之如封似闭
Capture Filter是指在捕捉时就对报文进行过滤,由此,Wireshark对不感兴趣的报文不再记录和显示。其优点是可以节省本地存储和显示资源,适合于报文数目过于庞大而对本地计算资源带来冲击的场合。
释然IT杂谈
2022/08/23
3510
威而鲨(WireShark)之如封似闭
接口测试如何在post请求中传递文件
2.找到body这个选项,输入文件对应的参数名,在然后把参数名后面的text选择为file。
sik1
2022/06/21
3.5K0
javascript变量和操作符
1.声明和赋值 var age,address; age=33 address="china' 简写:var age=33; address="china" 这种声明和赋值方法是最有效的 2.变量名 2.1js变量名允许包含字母、数字、美元符号和下划线(第一个字符不能是数字),字母区分大小写, 不允许标点符号(美元符号$除外); 2.2为了让长名字更容易阅读,推荐下划线例如my_mood,或者myMood(驼峰式) 驼峰式命名是函数名,方法名和对象属性名
天天_哥
2018/09/29
3780
shell 循环变量传递问题
定义为环境变量没有用的,环境变量只是在子进程创建的时候可以从父进程复制到子进程,它无法实现从子进程往父进程传递,也不能在子进程运行期间从父进程获得新值。
全栈程序员站长
2022/09/15
9650
通过 JavaScrpit 传递 Post 变量
使用 Get 方式方式传递变量会把 URL 搞得很长,而且 IE 会对长度有限制,所以最好的方式还是通过 Post 方式来传递变量。但是通过 Post 来传递变量的时候一定要有个表单,很多时候页面上并没有表单,所以这个时候可以隐藏表单,然后通过 JavaScript 来提交表单。下面是个隐藏表单的例子:
Denis
2023/04/13
7030
条码打印软件之如何在条码数据插入字符而不被扫描
有的客户在制作条形码的时候可能会想在条码内容中插入字符,但是,又希望插入的字符不被扫描出来,那么在条码打印软件中是如何设置的呢?接下来小编就给大家简单介绍下,条码打印软件中如何在条码内容插入字符,而又不被扫描出来。
中琅软件
2019/06/25
1K0
Python 模块之间传递变量
最近在做实验时发现个问题,我想在一个模块中调用另一个模块的变量,首先想到了用return 
py3study
2020/01/10
3.8K0
如何在C中传递二维数组作为参数?
在C语言中,有很多方法可以将2d数组作为参数传递。在下面的部分中,我描述了将2d数组作为参数传递给函数的几种方法。
用户4645519
2020/09/08
3.2K0
PHP变量传递值的方法
变量的传值方式,是指一个变量传给另一个变量的内部细节形式——单对单. 值传递 互相独立,互不影响. <?php $v1 = 1; $v2 = $v1; // 值传递
小新哟
2020/09/23
2.8K0
PHP变量传递值的方法
thymeleaf 传递数据到js变量
thymeleaf 传递数据到js变量 如何把控制器传来的model中的值传递给js变量呢? 需要以下两个: <script th:inline="javascript"> var message =
Dream城堡
2018/09/10
5.2K0
如何在 Python 中反转字符串?
在 Python 中,字符串是 Unicode 字符的序列,尽管 Python 支持许多用于字符串操作的函数,但它没有明确设计用于反转字符串的内置函数或方法。
网络技术联盟站
2022/03/15
2.5K0
ThinkPHP5学习002-向模板中传递变量
在模板中输出变量的值,使用{},其中no,name就是控制器传递给模板的两个变量名
哆哆Excel
2022/10/25
1.4K0
ThinkPHP5学习002-向模板中传递变量
点击加载更多

相似问题

Sourceforge:"...似乎不是git存储库“

10

SourceForge文件发布

14

SourceForge:镜像GIT存储库到SVN

23

SourceForge有Subversion存储库搜索功能吗?

11

将sourceforge依赖项添加到Gradle项目

122
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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