[英]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 ,它只会带您进入登录页面。
我可以想到您可以在这里采取的两条路径:
对登录过程的工作原理进行逆向工程,并使用请求库发出登录请求,并从中获取(很可能)session cookie,以便能够请求需要登录的页面。
(更简单)使用 selenium 代替。 Selenium 是一个允许您控制完整浏览器实例的库,因此您可以使用此方法轻松输入凭据。 另一方面,Beautiful Soup 只是简单地解析 html,因此在 Beautiful Soup 中进行身份验证之类的工作通常比在 Selenium 中所做的工作要多得多。 如果你还没有,我肯定会建议你调查一下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.