繁体   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