其中captcha-solution表示验证码的值,captcha-id表示此时验证码图片的id标号,隐藏标签,在登陆页面是这样的:
data = {
'data = {
'captcha-id':captcha_id,
'captcha-solution':solution, # 验证码的值
'source':'movie',
'redir':'https://movie.douban.com/',
'form_email': '你的帐号',
'form_password': '你的密码',
'login':'登录'
}
}
import requests
from bs4 import BeautifulSoup
from urllib.request import urlretrieve # 登录界面的url
s = requests.session()
login_url = 'https://accounts.douban.com/login'
res =s.get(login_url)
html = BeautifulSoup(res.text,'html.parser')
href_tagert = html.find_all('img',{'id':'captcha_image'}) # 验证码图片的匹配结果,此时是一个列表
solution_href = href_tagert[0]['src'] #真正的图片地址 https://....
urlretrieve(solution_href) # 下载到本地默认的图片下载保存地址了
solution = input('输入你的验证码:') # 去找到图片的下载地方,去识别然后输入
captcha_id = html.find_all('input',{'name':'captcha-id'})[0]['value'] # 获取captcha_id的值
login_url = 'https://accounts.douban.com/login' # 登录界面的url
# 头号玩家你评论能看到的最后一页的地址
headers = {
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
} #构建了一个头信息,保险
get_url = 'https://movie.douban.com/subject/4920389/comments?start=480&limit=20&sort=new_score&status=P&percent_type='
res = s.post(login_url,headers=headers,data=data) # 登录
res = s.get(get_url) # 登录成功后再去get评论页面,这样就可以获取所有页面的评论的html
# coding:utf-8
import requests
from bs4 import BeautifulSoup
from urllib.request import urlretrieve
s = requests.session()
login_url = 'https://accounts.douban.com/login' # 登陆界面的url
# 最后一页评论的url
get_url = 'https://movie.douban.com/subject/4920389/comments?start=480&limit=20&sort=new_score&status=P&percent_type='
res =s.get(login_url)
html = BeautifulSoup(res.text,'html.parser')
# 验证码图片地址
href_tagert = html.find_all('img',{'id':'captcha_image'})
# 有时候没有验证码,所以我这里判断了一下
#如果有验证码存在就用构建一个有验证码信息的data,没有就构建另一个data
if len(href_tagert)==0:
data = {
'source':'movie',
'redir':'https://movie.douban.com/',
'form_email': '你的帐号',
'form_password': '你的密码',
'login':'登录'}
else:
solution_href = href_tagert[0]['src']
urlretrieve(solution_href) # 下载到本地默认的图片下载保存地址了
solution = input('输入你的验证码:')
captcha_id = html.find_all('input',{'name':'captcha-id'})[0]['value']
data = {
'captcha-id':captcha_id,
'captcha-solution':solution, # 验证码的值
'source':'movie',
'redir':'https://movie.douban.com/',
'form_email': '你的帐号',
'form_password': '你的密码',
'login':'登录'
}
headers = {
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
}
res = s.post(login_url,headers=headers,data=data)
res = s.get(get_url)
html = BeautifulSoup(res.text, 'html.parser')
comments = html.find_all('div', {'class':'comment-item'})
for i in comments:
print(i.find('p').string)