Python 网页抓取的问题:不完整的 HTML 代码提取

问题描述 投票:0回答:2

我是一名 Python 新手,目前面临着抓取代码的问题。 该脚本成功访问网站并避免使用 cookie。 然而,遗憾的是它没有复制整个 HTML 代码。

这是网站上 HTML 代码的完整部分:

<div class="index__factor__Mo6xW p-base-regular">
  <h4 class="index__title__Rq0Po">Arbeitsatmosphäre</h4>
  <div class="index__block__7hodp index__scoreBlock__KZCPC">
    <span class="index__stars__nfK6S index__medium__CyRQn index__stars__bpFJl" data- fillcolor="butterscotch" data-score="5"></span>
  </div>
  <p class="index__plainText__JgbHE">Dynamisch</p>
</div>

这是提取的代码:

<div class="index__factor__Mo6xW p-base-regular">
  <h4 class="index__title__Rq0Po">Work Atmosphere</h4>
  <p class="index__plainText__JgbHE">Dynamic</p>
</div> 

这是我已经尝试提取的代码:

url = "https://www.kununu.com/de/adidas/kommentare"
driver = webdriver.Chrome()
driver.get(url)

[...]

show_more_reviews(driver, 5)  #Code clicks on "Read more Reviews"
make_mini_scores_visible(driver) #Code shows al "Mini Scores" like "Arbeitsatmosphäre"

all_reviews = driver.execute_script("return document.documentElement.innerHTML;")
soup = BeautifulSoup(html, 'html.parser')

提取整个代码非常重要,因为我需要每一条信息。

提前谢谢您!

python html selenium-webdriver web-scraping beautifulsoup
2个回答
0
投票

从 selenium 导入 webdriver 从 selenium.webdriver.chrome.service 导入服务 从 selenium.webdriver.chrome.options 导入选项 从 bs4 导入 BeautifulSoup

其余代码保持不变

soup = BeautifulSoup(html, 'html.parser')

work_atmosphere_divs = soup.find_all('div', class_='index__factor__Mo6xW p-base-regular')
for div in work_atmosphere_divs:
    title = div.find('h4', class_='index__title__Rq0Po').text.strip()
    atmosphere = div.find('p', class_='index__plainText__JgbHE').text.strip()
    print(f"Title: {title}, Atmosphere: {atmosphere}")

driver.quit()

你可以试试这个,这可能会对你有帮助


0
投票

您在页面上看到的数据以 Json 形式存储在

<script>
元素内,因此您可以使用它:

import json

import requests
from bs4 import BeautifulSoup

url = "https://www.kununu.com/de/adidas/kommentare"

soup = BeautifulSoup(requests.get(url).content, "html.parser")
data = json.loads(soup.select_one("#__NEXT_DATA__").text)

# print(json.dumps(data, indent=4))

for r in data["props"]["initialReduxState"]["reviews"]["reviews"]:
    print(r["title"], r["score"])
    for rr in r["ratings"]:
        print(rr["id"], rr["score"], rr["text"])
    print()

打印:


...

Noch weit weg von einer Verbesserung ///. Nur Show bei Adidas. 2.5
atmosphere 3 Viel Druck. Performance System heiß MyBest. Die Vorgesetzten bekommen von der Personalabteilung und den VPs gesagt wie sie zu bewerten haben und niemand traut sich dagegen vorzugehen.<br/>Mitarbeitende werden nicht wertgeschätzt.
image 4 Noch ok, aber überbewertet.
career 2 Onlinekurse ohne Strategie
salary 2 Nicht transparent und auch bei Jobangeboten keine Gehaltsinformationen.<br/>Sozialleistungen nur Standard.<br/>VWL 40.- Pro Monat
oldColleagues 1 Erfahrene Mitarbeiterende verschwinden still und leise....
leadership 1 Kaum Kompetenzen in der Mitarbeiterführung. Das zeigen auch die negativen Rückmeldungen der sich wiederholenden Mitarbeiterbefragungen. Fragt man nach dem Ergebnis des NPS.
equality 3 Noch immer keine offenen Gehaltsinformationen nach Stellen und Positionen.<br/>Nasenfaktor zählt nur.
workLife 3 None
environment 3 None
teamwork 3 None
workConditions 3 None
communication 2 None
tasks 3 None
© www.soinside.com 2019 - 2024. All rights reserved.