簡體   English   中英

不要從湯中獲取數據

[英]Don't get data from soup

我用 python 創建了 bs4 網絡抓取應用程序。 我的程序返回空列表以供審核。 對於湯程序運行正常。

from bs4 import BeautifulSoup
import requests
import pandas as pd

data = []
usernames = []
titles = []
comments = []

result = requests.get('https://www.kupujemprodajem.com/review.php?action=list')

soup = BeautifulSoup(result.text, 'html.parser')
review = soup.findAll('div', class_="single-review")
print(review)

for i in review:
    header = i.find('div', class_="single-review__header")
    footer = i.find('div', class_="comment-holder")
    username = header.find('a', class_="single-review__username").text
    title = header.find('div', class_="single-review__related-to").text
    comment = footer.find('div', class_="single-review__comment").text
    usernames.append(username)
    titles.append(title)
    comments.append(comment)

data.append(usernames)
data.append(titles)
data.append(comments)

print(data)

class 沒有問題。

看起來這不起作用的原因是該網站需要登錄才能訪問該頁面。 如果您在瀏覽器的私人標簽中訪問https://www.kupujemprodajem.com/review.php?action=list ,它只會帶您進入登錄頁面。

我可以想到您可以在這里采取的兩條路徑:

  1. 對登錄過程的工作原理進行逆向工程,並使用請求庫發出登錄請求,並從中獲取(很可能)session cookie,以便能夠請求需要登錄的頁面。

  2. (更簡單)使用 selenium 代替。 Selenium 是一個允許您控制完整瀏覽器實例的庫,因此您可以使用此方法輕松輸入憑據。 另一方面,Beautiful Soup 只是簡單地解析 html,因此在 Beautiful Soup 中進行身份驗證之類的工作通常比在 Selenium 中所做的工作要多得多。 如果你還沒有,我肯定會建議你調查一下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM