我正在尝试从这个网站的所有页面获取所有鞋子的列表https://www.dickssportinggoods.com/f/all-mens-footwear,但是我不知道在我的代码中还需要写什么。 基本上我想从网站的所有页面中选择一个品牌的鞋子。例如,我想选择新的Balance鞋,我想按我选择的branc名称打印所有鞋的列表。下面是我的代码
from bs4 import BeautifulSoup as soup
from urllib.request import urlopen as uReq
Url = 'https://www.dickssportinggoods.com/f/all-mens-footwear'
uClient = uReq(Url)
Page = uClient.read()
uClient.close()
page_soup = soup(Page, "html.parser")
for i in page_soup.findAll("div", {"class":"rs-facet-name-container"}):
print(i.text)
你可以点击过滤器按钮,检查所有你想要的品牌。 你只需要做
driver.find element by xpath()
如果你使用硒,你必须知道这一点页面正在使用java脚本创建您想要的链接,您无法刮取该链接,您需要复制页面请求,在这种情况下,页面正在发送post请求:
使用浏览器中的inspect element工具检查请求标头,以模拟post请求
这是发送post请求的url:
这是浏览器发送的帖子信息
页面可能还需要标题,因此请确保模拟浏览器发送的请求
该站点正在使用js脚本更新其元素,因此您无法单独使用beautifulsoup,您必须使用自动化
下面的代码将不起作用,因为元素在几毫秒后更新。它将首先显示所有品牌,然后更新并显示所选品牌,以便使用自动化
失败的代码:
代码:(selenium+bs4)
我已经注释掉了无头chrome,因为当你打开它时,你会在关闭它后看到一个对话框按钮,你可以获取产品的详细信息。在无浏览器自动化中,您将无法做到这一点(无法回答此问题。硒的概念不太好)
别忘了安装:
webdriver_manager
使用pip install webdriver_manager
相关问题 更多 >
编程相关推荐