常见的分类
分类方式一
1.不用登录就能爬取的网站,
2.需要先登录的网站
这一类网站又可以分为:
01.只需输入帐号密码、
02.除了帐号密码还需输入或点击验证码等类型。
01.只需输入帐号密码、
只需要输入账号密码的情况
介绍模拟登录常用的 3 种方法。
001.POST 请求方法:需要在后台获取登录的 URL并填写请求体参数,然后 POST 请求登录,相对麻烦;
002.添加 Cookies 方法:先登录将获取到的 Cookies 加入 Headers 中,最后用 GET 方法请求登录,这种最为方便;
003.Selenium 模拟登录:代替手工操作,自动完成账号和密码的输入,简单但速度比较慢
分类方式二
静态页面: 静态页面的时候直接查看response一般就是网页的全部代码
动态页面其实是相对于静态页面而言的 客户端语言改变页面的 HTML 和 CSS 元素
通常的手法都是监听、抓包、分析js文件
爬虫处理动态页面的两种方式
01.-- 逆向工程 模拟发包。 稳定性和效率
Ajax请求的具体链接,直接得到Ajax请求得到的数据
AJAX 使用的 XMLHttpRequest 的对象与服务器通信
JavaScript 中调用 XMLHttpRequest 对象。 HTTP 请求由 XMLHttpRequest 对象发送到服务器。
XMLHttpRequest 对象用于和服务器交换数据
02.--用现成的包操作浏览器 --selenium模拟浏览器
ghost.py 用 webkit 我们需要有pyqt或者是PySide
一般就是用 Selenium + PhantomJS
Selenium
测试代码输入操作给 webdriver
webdriver 再去控制浏览器,最终达到的效果就是代码实现对浏览器的操作
下载浏览器驱动:
例如火狐的 FirefoxDriver geckodriver
谷歌的 ChromeDriver
IE的驱动 IEdriver IEDriverServer
三大浏览器驱动 driver
webdriver.Chrome()
示例代码
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('http://www.baidu.com/')
启动火狐浏览器
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://www.baidu.com/')
启动IE浏览器 http://selenium-release.storage.googleapis.com/index.html
# #设置环境变量
# driver=webdriver.Ie(executable_path="./../lib/IEDriverServer.exe")
# IEDriverServer 的版本号和Selenium的版本号一定要一致
from selenium import webdriver
browser = webdriver.Ie()
browser.get('http://www.baidu.com/')
具体操作:
01.找到 POST 请求的 URL
02.构造参数构造 利用 Requests.post 方法请求登录网站
import requests
headers = {'User-Agent': 'User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'}
data = {'identity':'@@.com', 'password':'test2020'}
url ='https://www.'
session = requests.Session()
session.post(url,headers = headers,data = data)
response = session.get('http://rad',headers = headers)
print(response.status_code)
print(response.text)
import requests
headers = {
'User-Agent': 'User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
'Cookie': '你的cookie',}
url = 'https://www.ion='
session = requests.Session()
response = session.get('http://rent', headers=headers)
print(response.status_code)
网页相关内容
Referer:浏览器通过此来判断你从哪一个网页跳转过来
referer: https://www.cnblogs.com/
User Agent 中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA。它是一个特殊字符串头,
是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识
浏览器识别
User-Agent:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0);
Cookie 指的是当你浏览某网站时,网站存储在你电脑上的一个小文本文件,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。
它记录了你的用户ID,密码、浏览过的网页、停留的时间等信息,用于用户身份的辨别
HTTP协议是无状态
Cookie 正是这样的一段随HTTP请求一起被传递的额外数据,用于维护浏览器和服务器的会话
Cookie是基于浏览器的 Http Cookie Cookie的时间由服务器的设置决定
第一方Cookie和第三方Cookie
常用的包
lxml Python XML 库
Requests: 让 HTTP 服务人类
Pandas(python强大的数据处理库)
from selenium import webdriver
参考
python+Selenium用ie打不开浏览器解决办法 https://blog.csdn.net/qq_31857075/article/details/100748456
详解爬虫模拟登陆的三种方法 https://blog.csdn.net/zhusongziye/article/details/91353222