import requests

import html5lib

import re

from bs4 import BeautifulSoup

s = requests.Session()      #这里要提一点,就是session的话就是对会话的一种维持,因为request缺乏持续性,仅限于2个相邻的页面

url_login = 'http://accounts.douban.com/login'

url_contacts = 'https://www.douban.com/people/****/contacts'

formdata = {

'redir':'https://www.douban.com',      #重定向

'form_email':'t.t.panda@hotmail.com',

'form_password':'xxxxxxxxxxxxxx',

'login':u'登陆'            

 }

‘‘‘

关于字符串前面的功能的补充

1.r/R
表示非转义的原始字符串,比如在字符串中如果出现\n是换行,但是如果在字符串的前面添加r则表示\和n两个字符,一般常见于正则表达式中。 2.b
Python3里默认的str是(Python2里的)unicode, bytes是(Python2)的str, b前缀代表的就是bytes。 Python2里, b前缀没什么具体意义, 只是为了兼容Python3的这种写法。 3.u/U
表示unicode字符串 ,不是仅仅是针对中文, 可以针对任何的字符串,代表是对字符串进行unicode编码。 一般英文字符在使用各种编码下, 基本都可以正常解析, 所以一般不带u;但是中文, 必须表明所需编码, 否则一旦编码转换就会出现乱码。 建议所有编码方式采用UTF-8。 ’‘’ headers = ' 这里自己打开开发者工具查看浏览器,复制粘贴就行了' r = requestys.post(url_login,data = formdata,headers= headers) content = r.text soup = BeautifulSoup(content,'html5lib') captcha = soup.findall('img',id = 'captcha_image') #查看是否有验证码 if captcha:   captcha_url = captcha['src']   re_captcha_id = r'<input type-"hidden"name="captcha-id" value = "(.*?)"/'   captcha_id = re.findall(re_captcha_id,content)   print(captcha_id)   print(captcha_url)   print(captcha_url)   capycha_text = input('please input the captcha:')   formdata['captacha-solution'] =captcha_text   formdata['captacha-id'] =captcha_id   r = requests.post(url_login,data = formdata,headers = headers) print(r.text) r = s.get(url_conteacts) with open('contacts.txt','w+',encoding = 'utf-8'') as f:     f.write(r.text)   



但是我们也发现每一次登陆都要输入密码和账户,还要验证,这也实在是太麻烦了,所以可以通过cookies,这就是我们常说的那些记住当前网址的密码

import requests

headers = {........}
cookies = {...........}
url = 'xxxxxxxxxxxx' r= requests.get(url,cookies=cookies,headers = headers)
print(r.text) with open('sssss.txt','wb+') as f :
  f.write(r.content) 这其实就是最基本的一个爬虫套路模板了

关于上面的那个爬虫,爬出来的其实是验证码的图片,还需要手动打开然后识别图片里面的数字再手动输入,这个其实也是很麻烦的

这里先给出思路以后验证(如果还记得的呼哈)

1,利用selenium打开图片所在网页,保存这张图片,把图片读取到百度识图的api中,得到的答案自动反馈给程序

2,有一种设想,既然最后他要验证你输入的验证码对不对,那是不是图片的网页信息里面就夹杂着要比对的信息,那我是不是可以直接爬取这个然后反馈给程序?

3,要么索性偷个懒,链接挂到网上的验证码识别平台(滑稽)

最新文章

  1. jquery事件核心源码分析
  2. c语言冒泡排序
  3. LeetCode 01 Two Sum swift
  4. hibernate映射的 关联关系:有 一对多关联关系,一对一关联关系,多对多关联关系,继承关系
  5. UnityShader之固定管线命令Combine纹理混合【Shader资料4】
  6. Real Adaboost总结
  7. ConfigParser读取记事本、notepad++修改后的配置文件会出现:ConfigParser.MissingSectionHeaderError
  8. JetBrains IntelliJ IDEA for Mac 15.0 破解版 – Mac 上强大的 Java 集成开发工具
  9. API HOOK和PE文件的关系
  10. kali Rolling 安装QQ
  11. 深入理解 react-router 路由系统
  12. bzoj 1818 [CQOI 2010] 内部白点 - 扫描线 - 树状数组
  13. 安装windows系统时遇到的大坑——鼠标键盘没反应
  14. wmware虚拟机的克隆
  15. php-fpm定时器
  16. oracle12c创建用户和表空间出现的问题
  17. SpringDataJpa增删改查
  18. openstack安装问题
  19. Java并发之Semaphore的使用
  20. BP算法在minist数据集上的简单实现

热门文章

  1. 1626 - Brackets sequence——[动态规划]
  2. P1077 旅行
  3. MySQL——修改视图
  4. H3C 聚合链路负载分担原理
  5. Linux 内核完成 urb: 完成回调处理者
  6. The Preliminary Contest for ICPC Asia Shanghai 2019 C Triple(FFT+暴力)
  7. k8s数据持久化实验
  8. boostrap-非常好用但是容易让人忽略的地方【7】:list-unstyled list-inline
  9. .NET Core + docker入门
  10. 如何删除Word自动编号后文字和编号之间的空白距离