提前准备工作、安装准备工作(day3用)

 1. 安装scrapy 11
https://www.cnblogs.com/wupeiqi/articles/6229292.html

a. 下载twisted 
http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

b. 安装wheel 
pip3 install wheel

c. 安装twisted

pip3 install Twisted‑18.7.0‑cp36‑cp36m‑win_amd64.whl

d. 安装pywin32
pip3 install pywin32

e. 安装scrapy 
pip3 install scrapy 

 
 
https://www.cnblogs.com/wupeiqi/articles/6283017.html   武沛齐老师博客。

一、访问登录界面

# ============================第一步访问登录界面======================================
import requests
r1 =requests.get(
url="https://passport.lagou.com/login/login.html",
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)\
Chrome/67.0.3396.87 Safari/537.36",}
)
r1_cookie_dict =r1.cookies.get_dict()
print(r1.text)
print("r1-cookie:===>",r1_cookie_dict)

  打印结果:

二、登录界面,登录成功

# =======================================第二步、去登录拉钩网================================================

import re

token =  re.findall("X_Anti_Forge_Token = '(.*)';",r1.text)[0]
code =re.findall("X_Anti_Forge_Code = '(.*)';",r1.text)[0]
print(token)
print(code) r2 =requests.post(
url="https://passport.lagou.com/login/login.json", headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36",
"X-Requested-With":"XMLHttpRequest",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"Connection": "keep-alive",
"Content-Length": "111",
"Origin": "https: // passport.lagou.com",
"Referer": "https://passport.lagou.com/login/login.html",
"X-Anit-Forge-Code":code,
"X-Anit-Forge-Token" :token ,
},
data={"isValidate": "true",
"username": "",
"password": "4d541689997b5ff6ac90a350b5dd6693",
"request_form_verifyCode":"",
"submit":""
},
cookies= r1_cookie_dict
) print(r2.text)

打印结果

三、登录邀请(invitation)界面

import  requests

r3 =requests.get(
url="https://www.lagou.com/mycenter/invitation.html", headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36",
"Host": "www.lagou.com",
"Upgrade-Insecure-Requests": "1"
},
cookies= r1_cookie_dict #cookies不正确.print出来的不正确.
)
print(r3.text)

打印结果:

登录失败。 所以 第三步的流程不对,应该尝试其他的流程

重新登录后会发现有个如下的请求

重定向到新的网站

 又重定向新的网址

又重定向新的网址

重定向后:

 第三步; grant 登录

import  requests

r3 =requests.get(
url="https://passport.lagou.com/grantServiceTicket/grant.html", headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36",
"Host": "passport.lagou.com",
"Upgrade-Insecure-Requests": "1",
"Connection": "keep-alive",
"Referer": "https://passport.lagou.com/login/login.html?ts=1532004536388&serviceId=lagou&service=https%253A%252F%252Fwww.lagou.com%252F&action=login&signature=F241DF2A40C183BA91C33BA6604912F0",
},
cookies= r1_cookie_dict,
allow_redirects =False #把重定向关掉.
)
r3_cookie_dict =r3.cookies.get_dict()
print(r3.text)
print(r3.cookies.get_dict())

  打印结果:

第四步, 发送action 请求

# =======================================第四步、Action发请求================================================
all_cookies_dict.update()
import requests
r4 =requests.get(
url="https://www.lagou.com/?action=grantST&ticket=ST-f6c670b8a6104480a96cd835d80a8db8", headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36",
"Host": "www.lagou.com",
"Referer": "https://passport.lagou.com/login/login.html?ts=1532005741245&serviceId=lagou&service=https%253A%252F%252Fwww.lagou.com%252F&action=login&signature=ED6DE46236FC2638697A5ECC080822F7",
},
cookies= all_cookies_dict,
allow_redirects =False
)
r4_cookie_dict =r4.cookies.get_dict()
print("r4===>",r4.text)

  

第五次请求 

# ##################################### 第五步:获取认证信息 #####################################
r5 = requests.get(
url=r4.headers['Location'],
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
'Referer':'https://passport.lagou.com/login/login.html',
'Host':'www.lagou.com',
'Upgrade-Insecure-Requests':'1',
},
cookies=all_cookie_dict,
allow_redirects=False )
r5_cookie_dict = r5.cookies.get_dict()
all_cookie_dict.update(r5_cookie_dict) print(r5.headers['Location'])

  

第六次请求

# ##################################### 第六步:我的邀请 #####################################
r = requests.get(
url='https://www.lagou.com/mycenter/invitation.html',
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
'Host':'www.lagou.com',
'Upgrade-Insecure-Requests':'1',
'Pragma':'no-cache',
},
cookies=all_cookie_dict
)
print('wupeiqi' in r.text)

最后登录成功:

第七步:

# ##################################### 第七步 #####################################
r7 = requests.get(
url=r6.headers['Location'],
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
'Referer':'https://passport.lagou.com/login/login.html',
'Host':'www.lagou.com',
'Upgrade-Insecure-Requests':'1',
},
cookies=all_cookie_dict,
allow_redirects=False )
r7_cookie_dict = r7.cookies.get_dict()
all_cookie_dict.update(r7_cookie_dict)

  

第八步:

# ##################################### 第九步:查看个人信息 #####################################

r9 = requests.put(
url='https://gate.lagou.com/v1/neirong/account/users/0/',
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
'Host':'gate.lagou.com',
'Origin':'https://account.lagou.com',
'Referer':'https://account.lagou.com/v2/account/userinfo.html',
'X-L-REQ-HEADER':'{deviceType:1}',
'X-Anit-Forge-Code':r8_response_json.get('submitCode'),
'X-Anit-Forge-Token':r8_response_json.get('submitToken'),
'Content-Type':'application/json;charset=UTF-8',
},
json={"userName":"wupeiqi999","sex":"MALE","portrait":"images/myresume/default_headpic.png","positionName":"...","introduce":"...."},
cookies=all_cookie_dict
) print(r9.text)

  

爬虫 抖音视频

3. requests模块
参数:
url
params
headers
cookies
data
示例:
request.post(
data={
user:'alex',
pwd:'sb'
}
)

user=alex&pwd=sb

chrome: formdata
json
示例:
request.post(
json={
user:'alex',
pwd:'sb'
}
)

'{"user":"alex","pwd":"sb"}'

chrome: request payload

s10day112
内容回顾:
第一部分:爬虫相关
1. 谈谈你对http协议的理解?
规范:
1. Http请求收发数据的格式
GET /index/ http1.1/r/nhost:xxx.com/r/n/r/n
POST /index/ http1.1/r/nhost:xxx.com/r/n/r/nuser=xxx 2. 短连接(无状态)
一次请求一次响应之后,就断开连接 3. 基于TCP协议之上
sk = socket()
sk.send('GET /index/ http1.1/r/nhost:xxx.com/r/n/r/n')
常见请求头有哪些?
host
content-type
user-agent
cookies
referer,上一次请求地址
常见的请求方法有哪些?
GET
POST
DELETE
PUT
PATCH
OPTIONS
2. requests
用于伪造浏览器发送请求
参数:
- url
- headers
- data
- cookies
响应:
- content
- text
- encoding='gbk'
- headers
- cookies.get_dict() 3. bs
用于解析HTML格式的字符串
方法和属性:
- find
- find_all
- attrs
- get
- text 4. 套路
- 汽车之家
- 抽屉新闻:携带user-agent
- 登录抽屉:第一访问保留cookie,登录时需要再次携带;
- 自动登录github:获取csrf_token,到底携带那一个cookie 补充:自动登录github 第二部分:路飞相关
1. 公司的组织架构?
开发:
- 村长
- 前端姑娘
- 涛
- 云(产品+开发)
UI:1人
测试:1人
运维:1人
运营:2人
销售:3人
班主任:1人
全职助教:2人
人事/财务:老男孩共享 2. 项目架构
- 管理后台(1)
- 权限
- xadmin
- 导师后台(1)
- 权限
- xadmin
- 主站(1+1+0.5+1)
- restful api
- vue.js 现在开发:题库系统 3. 涉及技术点:
- django
- django rest framework
- vue.js
- 跨域cors
- redis
- 支付宝支付
- 视频播放
- CC视频
- 保利
- 微信消息推送
- 已认证的服务号
- 发送模板消息
- content-type 今日内容:
- 拉勾网
- 抖音
- requests
- bs4
- 初识scrapy框架 内容详细:
1.拉勾网
- Token和Code存在页面上,自定义请求头上
- 重定向:
- 响应头的Location中获取要重定向的地址
- 自己去处理
- 请求发送时需要携带上次请求的code和token 原则:
- 完全模拟浏览器的行为 2. 爬抖音视频 3. requests模块
参数:
url
params
headers
cookies
data
示例:
request.post(
data={
user:'alex',
pwd:'sb'
}
) user=alex&pwd=sb chrome: formdata
json
示例:
request.post(
json={
user:'alex',
pwd:'sb'
}
) '{"user":"alex","pwd":"sb"}' chrome: request payload
allow_redirecs
stream files
requests.post(
url='xxx',
files={
'f1': open('readme', 'rb')
}
) auth
from requests.auth import HTTPBasicAuth, HTTPDigestAuth ret = requests.get('https://api.github.com/user', auth=HTTPBasicAuth('admin', 'admin'))
print(ret.text) timeout
ret = requests.get('http://google.com/', timeout=1) ret = requests.get('http://google.com/', timeout=(5, 1))
proxies
proxies = {
"http": "61.172.249.96:80",
"https": "http://61.185.219.126:3128",
}
# proxies = {'http://10.20.1.128': 'http://10.10.1.10:5323'} ret = requests.get("https://www.proxy360.cn/Proxy", proxies=proxies)
print(ret.headers) from requests.auth import HTTPProxyAuth
auth = HTTPProxyAuth('username', 'mypassword') r = requests.get("http://www.google.com", proxies=proxyDict, auth=auth) 证书相关:
cert
verify session:自动管理cookie和headers(不建议使用)
import requests session = requests.Session()
i1 = session.get(url="http://dig.chouti.com/help/service")
i2 = session.post(
url="http://dig.chouti.com/login",
data={
'phone': "8615131255089",
'password': "xxooxxoo",
'oneMonth': ""
}
)
i3 = session.post(
url="http://dig.chouti.com/link/vote?linksId=8589523"
)
print(i3.text) 4. bs4 参考示例:https://www.cnblogs.com/wupeiqi/articles/6283017.html 预习:
1. 安装scrapy
https://www.cnblogs.com/wupeiqi/articles/6229292.html a. 下载twisted
http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted b. 安装wheel
pip3 install wheel c. 安装twisted pip3 install Twisted‑18.7.0‑cp36‑cp36m‑win_amd64.whl d. 安装pywin32
pip3 install pywin32 e. 安装scrapy
pip3 install scrapy

  

requests.get(url, params=None, **kwargs)
requests.post(url, data=None, json=None, **kwargs)
requests.put(url, data=None, **kwargs)
requests.head(url, **kwargs)
requests.delete(url, **kwargs)
requests.patch(url, data=None, **kwargs)
requests.options(url, **kwargs) 

day 112天,爬虫(拉钩网,斗音,GitHub)第二天的更多相关文章

  1. python爬虫——拉钩网python岗位信息

    之前爬取的网页都是采用"GET"方法,这次爬取"拉勾网"是采取了"POST"的方法.其中,"GET"和"POS ...

  2. python爬虫拉钩网:{'msg': '您操作太频繁,请稍后再访问', 'clientIp': '113.57.176.181', 'success': False}

    反爬第一课: 在打印html.text的时候总会提示 {'success': False, 'msg': '您操作太频繁,请稍后再访问', 'clientIp': '113.14.1.254'} 需要 ...

  3. nodejs实现拉钩网爬虫

    概述 通过nodejs+mysql+cheerio+request实现拉钩网特定公司的所有招聘信息的抓取,并将抓取的信息保存到数据库中.抓取内容包括:薪酬福利,工作地,职位要求,工作性质等几乎所有的内 ...

  4. Python3 Scrapy + Selenium + 阿布云爬取拉钩网学习笔记

    1 需求分析 想要一个能爬取拉钩网职位详情页的爬虫,来获取详情页内的公司名称.职位名称.薪资待遇.学历要求.岗位需求等信息.该爬虫能够通过配置搜索职位关键字和搜索城市来爬取不同城市的不同职位详情信息, ...

  5. 拉钩网爬取所有python职位信息

    最近在找工作,所以爬取了拉钩网的全部python职位,以便给自己提供一个方向.拉钩网的数据还是比较容易爬取的,得到json数据直接解析就行,废话不多说, 直接贴代码: import json impo ...

  6. 使用request爬取拉钩网信息

    通过cookies信息爬取 分析header和cookies 通过subtext粘贴处理header和cookies信息 处理后,方便粘贴到代码中 爬取拉钩信息代码 import requests c ...

  7. selelinum+PhantomJS 爬取拉钩网职位

    使用selenium+PhantomJS爬取拉钩网职位信息,保存在csv文件至本地磁盘 拉钩网的职位页面,点击下一页,职位信息加载,但是浏览器的url的不变,说明数据不是发送get请求得到的. 我们不 ...

  8. 爬取拉钩网上所有的python职位

    # 2.爬取拉钩网上的所有python职位. from urllib import request,parse import json,random def user_agent(page): #浏览 ...

  9. Python 爬取拉钩网工作岗位

    如果拉钩网html页面做了调整,需要重新调整代码 代码如下 #/usr/bin/env python3 #coding:utf-8 import sys import json import requ ...

随机推荐

  1. 实验 Attacks on TCP/IP Protocols

    ------- 转载请注明出处,博客园-lasgalen-http://www.cnblogs.com/lasgalen/p/4555648.html ------- 1 实验目的 进行这个实验的目的 ...

  2. Mockplus教程:分分钟搞定APP首页原型设计

    Mockplus是一款快速原型设计工具,支持包括APP原型在内的多种原型与线框图设计.除了快速,Mockplus广受欢迎更因为它极低的上手门槛.今天小编就为大家展示如何用Mockplus在3分钟内完成 ...

  3. eclipse缓存太重,新手最容易中招

    有4种方法,从上到下清理:

  4. Can't use Subversion command line client: svn. Errors found while svn working copies detection.

    idea 报错: Can't use Subversion command line client: svn. Errors found while svn working copies detect ...

  5. 修改Swing窗口风格

    String look; java:    look = "javax.swing.plaf.metal.MetalLookAndFeel"; Windows:    look = ...

  6. Devexpress VCL Build v2014 vol 14.2.1 beta发布

    已经快到2015 年了. 14.2.1 beta 才出来了. 还好,有一些新东西. 官网地址 VCL Gauge Control Designed to clearly convey informat ...

  7. 2018.10.05 NOIP模拟 阶乘(简单数论)

    传送门 签到题. 直接把所有数先质因数分解. 同时统计每一个在阶乘中会出现的质数出现的最少次数. 然后对于每一个这样的质数,我们求出满足其出现质数的m的最小值,然后求出所有m的最大值. 求m的时候可以 ...

  8. 2018.09.17 atcoder Tak and Hotels(贪心+分块)

    传送门 一道有意思的题. 一开始想错了,以为一直lowerlowerlower_boundboundbound就可以解决询问,结果交上去TLE了之后才发现时间复杂度是错的. 但是贪心思想一定是对的,每 ...

  9. 解决yum安装时 Cannot retrieve repository metadata (repomd.xml) for repository

    打开/etc/yum.repos.d/CentOS6-Base-163.repo 将下面的baseUrl的地址换成网上最新 # CentOS-Base.repo## The mirror system ...

  10. (二)swagger-springmvc

    如何入门 1. 我在 http://mvnrepository.com/ 上搜索 swagger-springmvc 2. 我找到一个具体版本 http://mvnrepository.com/art ...