приятно познакомиться!
Я пытаюсь использовать Scrapfly для сбора отзывов сотрудников с таких сайтов, как Indeed или Glassdoor.
Однако я столкнулся с постоянной проблемой, о которой просто не могу судить. которую нужно решить.
Данные, которые я пытаюсь очистить, не проходят — в результатах отображаются только заголовки.
Что бы я ни пытался, я продолжаю сталкиваться с ужасным «пустым фреймом данных». проблема.
Я следил за примерами кода других людей, но у меня это не сработало.
Как другие успешно собирают эти обзоры?
Есть ли кто-нибудь, кто может одолжить руку помощи?
Буду очень признателен за вашу доброту!
!pip install beautifulsoup4 pandas lxml requests
!git clone https://github.com/scrapfly/python-sdk.git
%cd python-sdk
!pip install .
from scrapfly.client import ScrapflyClient
import os
os.environ["SCRAPFLY_KEY"] = "my key"
import os
import pandas as pd
from scrapfly.client import ScrapflyClient
from bs4 import BeautifulSoup
# Scrapfly API 키 설정
os.environ["SCRAPFLY_KEY"] = "my key"
SCRAPFLY_KEY = os.getenv("SCRAPFLY_KEY")
client = ScrapflyClient(key=SCRAPFLY_KEY)
# 결과를 저장할 리스트 초기화
lst = []
# 페이지를 순회하며 데이터 수집
for i in range(0, 240, 20): # 페이지 번호 범위
print(f"Scraping page {i // 20 + 1}...")
url = f"https://www.indeed.com/cmp/Airbnb/reviews?start={i}"
try:
# Scrapfly를 사용하여 데이터 요청
response = client.scrape({"url": url, "render_js": False}) # JavaScript 렌더링 필요 시 True로 설정
soup = BeautifulSoup(response.content, 'lxml')
main_data = soup.find_all("div", attrs={"data-tn-section": "reviews"})
# 데이터 추출
for data in main_data:
try:
title = data.find("h2").get_text(strip=True)
except AttributeError:
title = None
try:
author_status = data.find("span", attrs={"itemprop": "author"}).get_text(strip=True)
author = author_status.split("-")[1] if "-" in author_status else None
status = author_status.split("-")[0] if "-" in author_status else None
except AttributeError:
author, status = None, None
try:
review = data.find("span", attrs={"itemprop": "reviewBody"}).get_text(strip=True)
except AttributeError:
review = None
try:
pros = data.find("div", class_="cmp-review-pro-text").get_text(strip=True)
except AttributeError:
pros = None
try:
cons = data.find("div", class_="cmp-review-con-text").get_text(strip=True)
except AttributeError:
cons = None
try:
rating = data.find("div", attrs={"itemprop": "reviewRating"}).find("button")['aria-label'].split(" ")[0]
except AttributeError:
rating = None
# 결과를 리스트에 추가
lst.append([title, author, status, pros, cons, review, rating])
except Exception as e:
print(f"Error on page {i // 20 + 1}: {e}")
# DataFrame 생성
df = pd.DataFrame(lst, columns=['Title', 'Author', 'Status', 'Pros', 'Cons', 'Review', 'Rating'])
# 결과 출력 및 저장
print(df.head())
df.to_csv("/content/drive/MyDrive/indeed_reviews_scrapfly.csv", index=False)
Scraping page 1...
Error on page 1: 'dict' object has no attribute 'method'
Scraping page 2...
Error on page 2: 'dict' object has no attribute 'method'
Scraping page 3...
Error on page 3: 'dict' object has no attribute 'method'
Scraping page 4...
Error on page 4: 'dict' object has no attribute 'method'
Scraping page 5...
Error on page 5: 'dict' object has no attribute 'method'
Scraping page 6...
Error on page 6: 'dict' object has no attribute 'method'
Scraping page 7...
Error on page 7: 'dict' object has no attribute 'method'
Scraping page 8...
Error on page 8: 'dict' object has no attribute 'method'
Scraping page 9...
Error on page 9: 'dict' object has no attribute 'method'
Scraping page 10...
Error on page 10: 'dict' object has no attribute 'method'
Scraping page 11...
Error on page 11: 'dict' object has no attribute 'method'
Scraping page 12...
Error on page 12: 'dict' object has no attribute 'method'
Empty DataFrame
Columns: [Title, Author, Status, Pros, Cons, Review, Rating]
Index: []
Подробнее здесь: https://stackoverflow.com/questions/791 ... ping-emplo
Я хочу выяснить, как исправить ошибки, с которыми я сталкиваюсь при сборе отзывов сотрудников с Indeed и Glassdoor с пом ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение