网络培训网站,织梦网站修改教程视频教程,俄罗斯网站域名注册,以下属于网站的管理 更新 维护在做爬虫任务的时候#xff0c;我们常常会遇到很多网页必须登录后#xff0c;才可以开放某些页面。所以登录是爬取网页的第一步。但是#xff0c;通过post表单#xff08;包含用户名和密码#xff09;的方法#xff0c;对于那些不需要输入比较复杂的验证码的网页#xf…在做爬虫任务的时候我们常常会遇到很多网页必须登录后才可以开放某些页面。所以登录是爬取网页的第一步。但是通过post表单包含用户名和密码的方法对于那些不需要输入比较复杂的验证码的网页可以使用正则表达式将验证码和验证码的ID匹配得出然后实现自动化登录。但是现在多部分的网页都是需要输入图片验证码的所以必须得通过人工的识别图片然后输入验证码。当然你也可以开发一个深度学习算法将下载下来的验证码图片进行识别然后转换为数字进行输入但是这样就大大的提高了算法的成本本来你只是要爬取一些简单的信息却的开发一个实用的验证码识别算法实属划不来。所以我们可以通过使用cookie信息完成自动化输入而且每次访问网站的时候都不需要输入账号密码和验证码等信息相当于你在浏览器上勾选了记住我和自动登录的选项。下面就让我们开始学习如何使用cookie信息完成自动的登录以爬取豆瓣网内容为例。
一.输入验证码登录
首先我给出一个不使用cookie信息来登录的例子代码
import requestsimport html5libimport refrom bs4 import BeautifulSoups requests.Session()url_login http://accounts.douban.com/login #该网址通过跟踪登录信息可以查看到#登录的表单formdata { redir:https://www.douban.com,#登录后直接跳转的页面 form_email: 2324973098.com, #账户邮箱名(这是我自己乱写的邮箱号码使用时请换成你自己的邮箱号) form_password: 12345678!,#登录密码(这是我自己乱写的密码使用时请换成你自己的密码) login: u登陆}#登录的头信息为了模拟浏览器登录属于固定形式headers {user-agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36}r s.post(url_login, data formdata, headers headers)content r.textsoup BeautifulSoup(content, html5lib)#使用HTML5进行解析网页captcha soup.find(img, id captcha_image)#获取验证码图的链接#判断是否需要验证码需要则人工输入if captcha: captcha_url captcha[src] re_captcha_id rinput typehidden namecaptcha-id value(.*?)/#找出验证码的ID都可以通过跟踪登录过程知道 captcha_id re.findall(re_captcha_id, content) print(captcha_id) print(captcha_url) captcha_text input(Please input the captcha:)#通过将输出的验证码图片网页链接复制到浏览器打开然后观察验证码然后输入登录 formdata[captcha-solution] captcha_text formdata[captcha-id] captcha_id #加入验证码的信息后从新构造表单然后申请登录 r s.post(url_login, data formdata, headers headers)with open(contacts.txt, w, encoding utf-8) as f:f.write(r.text)
二.使用cookie信息登录
步骤
1.使用你的账号和密码登录豆瓣主页并且在登录页勾选记住我的选项。2.打开浏览器并按F12键调出开发者工具找到network这一选项选中all如下图所示3.在该业中输入豆瓣主页https://www.douban.com/,然后便可以在下面的监视框内看到登录的信息如下图4.找到最前面的一项显示的是www.douban.com单击后点击header,如下图5.在header下面找到cookie信息便可然后将cookie信息复制到代码中。如下图为了保护我的豆瓣的账户信息所以这里cookie信息进行遮蔽还望谅解。
代码如下
import requestsheaders {User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36}
cookies {cookie: bid10gz8L7vrjI; __yadk_uidQTSUUYvkbEDpprCxnGHo2vDkzhjkNgWB; ll108288; 608; ue2314963088qq.com; push_noty_num0; push_doumail_num0; __utmv30149280.17557; __utmt1; dbcl2175570305:1c9NM2YiWlg;ue2314963088qq.com; push_noty_num0; push_doumail_num0; __utmv30149280.17557; __utmt1; dbcl2175570305:1c9NM2YiWlg; ckYiiv; _pk_id.100001.8cb43997ae079664ac75.1508600267.12.1521361971.1520843669.; __utmb30149280.11.10.1521360343}r requests.get(url, cookies cookies, headers headers)
# print(r.text)
with open(douban_2.txt, wb) as f:f.write(r.content)到这里为止你就完成了使用cookie的所有步骤以后想再次访问该网站则不在需要输入验证码等信息了。