0x01
其实我是打算先写scrapy框架学习的,但是真的是被表哥催着,=3=,所以只能先写四(等我把三补上我就把这句话删掉)
最开始接触动态抓取页面呢,当时想抓一个微博用户的头像url,然后我兴奋得不得了,写了一个普通静态的脚本,反正也抓不到什么东西,我就不往这里贴代码了
抓不到东西的我很是崩溃啊,我真的以为是我的xpath写错了,但是无论怎么匹配,结果都是输出"[]"
然后再al0ne表哥的提示下,查看了源代码,发现这个是一个动态的js渲染的网页,当时我是很想找个人谈谈人生
完全不会啊!然后立刻上网搜集动态网页相关的博客之类的
在这里还是要偷偷吐槽一句话,C*D*很多博客都是相同的,却都写着自己原创。。。╮(╯▽╰)╭
然后花了半天时间去研究了一下关于selenuim模拟抓取的方法
因为动态的网页有的时候是可以从xhr里面看见一些源码的,我说的咧就是像weibo这样,xhr里面只有空空荡荡一片的,网页全靠js渲染的动态网页抓取啦
所以,开始啦
0x02
万事开头难啊,最难的就是安装,不过好在这一次的安装全程竟然没有出一点点乱子ヾ(o◕∀◕)ノ
直接pip install selenium
就阔以啦
然后输入以下的代码运行
(≖ ‿ ≖)✧
1 2 |
from selenium import webdriver driver=webdriver.Chrome() |
hhhhhhhhhhh是不是报错了(~ ̄▽ ̄~)
那是因为你没有安装chrome的驱动呀
点击这个链接即可下载Chrome浏览器驱动======>>Chrome浏览器驱动下载,必须要翻墙,╮( ̄▽ ̄)╭
我真的发现每次安装对我来说都是一场劫难,还有配置一堆七七八八的东西(╯‵□′)╯︵┻━┻ ,网上教程竟然全是MAC下的放置方式 Σ(  ̄□ ̄;) 看来是我太穷了,只能自己摸索了
下载好之后,解压,里面会有一个.exe
文件,直接放在你的python文件目录下面!!
这一步是为了写脚本的时候可以执行
然后再放一份在C:\Program Files (x86)\Google\Chrome\Application
下面,也就是谷歌浏览器的文件夹下
然后配置环境变量,如图
这一步是为了在交互可以执行
就此,无论是在脚本里面执行,还是在交互界面,都不会报错
0x03
其实selenuim算是一个很强大的工具模块,但是我们最经常用到的就是webdriver模块
然后开始写脚本,关于selenuim的用法,我上传到云盘里,表哥们可以自取,算是半个官方文档====>selenuim webdriver使用秘籍
接下来直接上脚本,模拟登录京东
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#coding:utf-8 import sys reload(sys) sys.setdefaultencoding( "utf-8" ) from selenium import webdriver import time from selenium.webdriver.common.desired_capabilities import DesiredCapabilities url="https://passport.jd.com/new/login.aspx" driver=webdriver.Chrome() driver.get(url) time.sleep(5) numsud=driver.find_element_by_xpath('//div[@class="login-tab login-tab-r"]/a').click() username=driver.find_element_by_xpath('//input[@id="loginname"]') username.send_keys('你的用户名') password=driver.find_element_by_xpath('//input[@id="nloginpwd"]').send_keys("你的密码") submit=driver.find_element_by_xpath('//a[@id="loginsubmit"]').click() #driver.close() |
这样子就结束啦~~
不知道是因为现在的jd登录页面改变了了还是怎么了,网络上找到的所有的代码,全部是无法登录的 T_T
表哥说新浪微博的模拟登陆方式吗~~总是要留一个你们自己试一试呀 =3=
如果有需要的话,发送邮件到lirsakura@163.com
直接找我要就可以啦
欢迎各位表哥多多交流啦~
0x04
让你们来看看selenuim真正厉害的地方吧~
真的是动态抓取咯
抓取京东的手机价格
1 2 3 4 5 6 7 8 9 10 11 |
#coding:utf-8 import time url="http://shouji.jd.com/" from selenium import webdriver driver = webdriver.Chrome() driver.get(url) time.sleep(5) money=driver.find_elements_by_xpath('//ul[@class="today-list clearfix selected"]/li/div[3]') for eachmoney in money: print eachmoney.text driver.close() |
是不是把手机价格抓下来啦~
反正我也买不起