我正在尝试从下面的网站导入所有的优惠与美丽的汤。
from bs4 import BeautifulSoup as soup
from urllib.request import urlopen as uReq
import requests
my_url='https://www.promobit.com.br/promocoes/playstation-4/s/'
uclient=uReq(my_url)
page_html=uclient.read()
uclient.close()
page_soup=soup(page_html, "html.parser")
containers=page_soup.findAll("div",{"class":"in-size"})但是,当我检查列表的长度时,它返回3,而不是像我预期的那样获得值96。
print(len(containers))
>>> 3由于某种原因,当我在“容器”中打印文本时,我从一些标签为"de graca“的报价中获取数据。
我尝试过使用不同的解析器,但是结果仍然是错误的。
发布于 2020-04-09 07:41:15
所以你在用来查找元素的选择器中犯了错误。如果在检查页面上的元素后,在elements选项卡中输入ctrl+f,您会发现只有3个节点的类为" in -size“。因此长度为3。
我已经用正确的选择器修改了你的代码。我要做的是找到id为" offers“的容器,它是所有offers的父容器。如果您查看html结构,您将注意到每个服务器的所有卡都具有"pr-tl-card“和”pr-tl-card“类。
from bs4 import BeautifulSoup as soup
from urllib.request import urlopen as uReq
import requests
my_url='https://www.promobit.com.br/promocoes/playstation-4/s/'
uclient=uReq(my_url)
page_html=uclient.read()
uclient.close()
page_soup=soup(page_html, "html.parser")
offers=page_soup.select("#offers div.pr-tl-card")
len(offer_container)发布于 2020-04-09 07:36:40
目前还不清楚您试图获取的是什么。你的意思是这样吗?
containers=page_soup.findAll("div",{"class":"pr-tl-card"})这将返回该页面的96个项目。
https://stackoverflow.com/questions/61111560
复制相似问题