【问题标题】:Missing Elements from HTML File Using BeautifulSoup使用 BeautifulSoup 从 HTML 文件中丢失元素
【发布时间】:2021-11-16 10:27:33
【问题描述】:

我对网络抓取世界非常陌生,我正在尝试从网站上抓取鞋子的名称。当我在网站上使用inspect时,有一个div标签,里面基本上包含了整个网页,但是当我打印出html代码时,div标签完全是空的!这是我当前的代码:

from bs4 import BeautifulSoup
import requests
import time

def findShoeNames():
   html_file = requests.get('https://www.goat.com/sneakers/brand/air-jordan').text
   soup = BeautifulSoup(html_file, 'lxml')
   print(soup)
 
if __name__ == "__main__":
   findShoeNames()

当我调用我的函数并打印(汤)时,div 标签看起来像这样:

<div id="root"></div>

但如前所述,当我在网站上点击检查时,这个 div 标签基本上包含了整个网页。所以我无法从网站上抓取任何数据。

请帮忙!谢谢

【问题讨论】:

  • 网址是什么?该页面可能是动态加载的
  • goat.com/sneakers/brand/air-jordan - 这是否意味着我需要使用硒? @MendelG
  • 数据来自 API POST 请求到https://2fwotdvm2o-dsn.algolia.net/1/indexes/*/queries?x-algolia-agent=Algolia%20for%20JavaScript%20(3.35.1)%3B%20Browser%20(lite)%3B%20JS%20Helper%20(3.2.2)%3B%20react%20(16.13.1)%3B%20react-instantsearch%20(6.8.2)&amp;x-algolia-application-id=2FWOTDVM2O&amp;x-algolia-api-key=ac96de6fef0e02bb95d433d8d5c7038a

标签: python html beautifulsoup


【解决方案1】:

网站使用js加载。所以你应该使用 selenium 和 chromedriver。 安装硒 从here 安装 chromedriver(解压缩并复制您的 python 文件夹)

import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

url = "https://www.goat.com/sneakers/brand/air-jordan"
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(chrome_options=options)
driver.get(url)
time.sleep(1)
page = driver.page_source
driver.quit()
soup = BeautifulSoup(page, 'lxml')

print(soup.prettify)

【讨论】:

  • 使用您的代码时出现以下错误:消息:“chromedriver”可执行文件需要在 PATH 中。
  • 这是因为chromedriver不在python路径中。
  • for win 通常是 appdata/local/Programs/Python/Python39
  • 知道了!谢谢!!
猜你喜欢
  • 2021-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多