哪位可以帮我看看代码有什么问题吗?
我尝试爬top100
可以为什么数据是空白的
代码运行是没有问题的
你复制出来。
大哥 我博客里写的清清楚楚 明明白白为嘛不看一下呢
不知道你这个问题是否已经解决, 如果还没有解决的话:简单的讲,网络爬虫就是模拟人访问web站点的行为来获取有价值的数据。专业的解释:百度百科
问题原因: 问题出在对豆瓣电影TOP250网页的访问权限上。
解决方案: 由于豆瓣网站对爬虫有一定的限制,需要进行登录验证才能访问。所以需要进行以下调整来解决问题:
requests.Session()
建立一个会话对象,以便在多次请求中保持登录信息。.get()
方法发送初始请求,获取到login页面。代码调整如下:
# 导入所需的库
import requests
from bs4 import BeautifulSoup
# 设置请求头,模拟浏览器访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
# 建立会话对象
session = requests.Session()
# 发送初始请求,获取login页面
login_url = 'https://accounts.douban.com/login'
login_response = session.get(login_url, headers=headers)
login_soup = BeautifulSoup(login_response.text, 'html.parser')
# 获取登录所需的验证码、验证码ID和其他必要的登录信息
# 在login_soup中找到相关信息并进行处理
# 构造登录post请求的数据
payload = {
# 填充登录所需的信息,如用户名、密码、验证码等
}
# 发送登录post请求
session.post(login_url, headers=headers, data=payload)
# 发送电影列表页面的请求
url = 'https://movie.douban.com/top250'
response = session.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 解析页面内容,获取电影信息
movies = soup.find_all('div', class_='item')
for movie in movies:
title = movie.find('span', class_='title').getText()
print(title)
注意事项: 1. 需要填充登录所需的相关信息,如用户名、密码、验证码等。使用Chrome开发者工具或Fiddler等工具观察登录豆瓣账号时的请求,可以获取到相关信息。 2. 为了简化问题描述和解决方案,本解决方案并未包含完整的填充登录信息的代码,需要根据个人环境和具体需求自行完成。 3. 在实际应用中,豆瓣网站可能会进行更新和调整,登录方式可能会有所变化。请根据最新的登录方式和请求参数进行调整。