【金沙澳门官网】祖传爬虫利器

作者: 网络编程  发布:2019-08-01

平台:mac

一些网页,比如微博,只有在登录状态才能进行页面的访问,或者对数据有比较复杂的验证和保护,直接通过网络请求进行登录并获取数据就会比较麻烦。这种时候,就该本篇的主角 selenium 上场了。

网站:人人网

Selenium 是一个用于 Web 应用程序测试的工具。它的优点在于,浏览器能打开的页面,使用 selenium 就一定能获取到。但 selenium 也有其局限性,相对于脚本方式,selenium 获取内容的效率不高。

最近练习爬虫登陆,方法一是找页面里的js文件,通过解析js文件找到cookie信息再保持。但现在的站点登陆都有验证码,而且最烦的是request时data表单里的值基本上没有不加密的,js学的不好,就别想着破解了。所以想起了用的比较少的selenium模块,用于模拟登陆并获取cookie。

本篇文章简单介绍 Selenium 下 webdriver 组件,它直接在浏览器中运行,其行为跟真实用户一样,打开浏览器、模拟输入内容、模拟点击按钮等等。Selenium 测试可以在市面上主流操作平台主流浏览器上运行。

import time,random
from selenium import webdriver
import requests
from urllib import request
from lxml import etree

driver = webdriver.Chrome(executable_path=r'/Applications/Google Chrome.app/chromedriver')
driver.get('http://www.renren.com/PLogin.do')
time.sleep(2)
driver.find_element_by_id('email').clear()
driver.find_element_by_id('email').send_keys('myusername')  # 输入用户名
driver.find_element_by_id('password').clear()
driver.find_element_by_id('password').send_keys('mypassword')  # 输入密码

img_url = 'http://icode.renren.com/getcode.do?t=web_login&rnd=' str(random.random())
request.urlretrieve(img_url,'renren_yzm.jpg')
try:
    driver.find_element_by_id('icode').clear()
    img_res = input('输入验证码:')  # 如果需要输入验证码,可以手工,或者接口给打码平台
    driver.find_element_by_id('icode').send_keys(img_res)
except:
    pass
driver.find_element_by_id('autoLogin').click()  # 自动登陆
driver.find_element_by_id('login').click()  # 登陆
time.sleep(3)
cookie_items = driver.get_cookies()  # 获取cookie值

post = {} # 保存cookie值
for cookie in cookie_items:
    post[cookie['name']] = cookie['value']
print(post['t'])  # 人人网登陆后需要保持登陆的cookie信息
driver.quit()  # 退出selenium
# ------------------------------------------------------------

url = 'http://www.renren.com/265025131/profile'
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
    'Cookie':'t=' post['t'],
}
response = requests.get(url,headers=headers)
print('-'*50)

html = etree.HTML(response.text)
title = html.xpath('//title/text()')
print('目前得到的页面信息',title)
print(response.url)

1、安装

Selenium 本身的安装十分简单 ,使用 pip install selenium 即可,配置相应的 web 环境才是关键,Selenium 支持主流的 IE 、Chrome、Firefox、Opera、Safari、phantomjs等浏览器。
其中 Firefox 浏览器不需要任何配置可以直接调用,但 IE 、Chrome 等浏览器需要添加一个 driver 文件,以最常用的 Chrome 为例:

下载 chromedriver.exe
下载解压之后,将 chromedriver.exe 添加到和 python安装的根目录下,如图:

image.png

然后就可以在脚本中正常使用 selenium 调用 Chrome 了,IE 的配置方法类似。

很多同学使用 selenium 的初衷是作为爬虫使用或者对付反爬虫手段,用不着浏览器界面,希望程序在后台运行就可以了。我们推荐有这样需求的同学使用无界面的 PhantomJS 代替 Chrome 或者 Firefox。

安装过程如下:

下载 PhantomJS

将下载完成的 phantomjs.exe 添加到 python 安装路径中的 scripts 文件夹中,如图:

image.png

接着,就可以正常使用了。

总结:使用selenium模拟登陆、 获取cookie没用多少时间,但想当然的以为进入renren的个人页面必须使用获取的所有cookie值,徒浪费N多个小时,结果只保留了cookie内的't'值,就做到保持登陆, 所以,不断的测试,是比较重要的。

2、基本使用方法

2.启动

完成安装以及环境配置之后,就可以正式的在脚本中调用了,我们以打开百度首页为例:

from selenium import webdriver

# 调用 Chrome 浏览器
driver = webdriver.Chrome()
# 转到 百度 首页
driver.get('http://www.baidu.com')

以上就是一个最简单的打开网页的例子,当你使用 Firefox 时,调用方法:

driver = webdriver.Firefox()

使用 PhantomJS 时:

deriver = webdriver.PhantomJS()

本文由金沙澳门官网发布于网络编程,转载请注明出处:【金沙澳门官网】祖传爬虫利器

关键词: 金沙澳门官网

上一篇:快速打造一个App,下载unsplash美图到本地
下一篇:没有了