爬取前需要安装Selenium&PhantomJS
Selenium 是一个 Web 的自动化测试工具, 最初是为网站自动化测试而开发的, 类型像我们玩游戏用的按键精灵, 可以按指定的命令自动操作, 不同是 Selenium 可以直接运行在浏览器上, 它支持所有主流的浏览器(包括 PhantomJS 这些无界面的浏览器) 。Selenium 可以根据我们的指令, 让浏览器自动加载页面, 获取需要的数据, 甚至页面截屏, 或者判断网站上某些动作是否发生。Selenium 自己不带浏览器, 不支持浏览器的功能, 它需要与第三方浏览器结合在一起才能使用。 但是我们有时候需要让它内嵌在代码中运行, 所以我们可以用一个叫 PhantomJS的工具代替真实的浏览器。
可以从 PyPI 网站下载 Selenium 库 /simple/selenium , 也可以用第三方管理器 pip 用命令安装: pip install selenium==2.48.0
Selenium 官方参考文档: http://selenium-python.readthedocs.io/index.html
PhantomJSphantom: 美 ['fæntəm], 鬼怪, 幽灵。
PhantomJS 是一个基于 Webkit 的“无界面”(headless)浏览器, 它会把网站加载到内存并执行页面上的 JavaScript, 因为不会展示图形界面, 所以运行起来比完整的浏览器要高效。如果我们把 Selenium 和 PhantomJS 结合在一起, 就可以运行一个非常强大的网络爬
虫了, 这个爬虫可以处理 JavaScrip、 Cookie、 headers, 以及任何我们真实用户需要做的事情。注意: PhantomJS 只能从它的官方网站 /download.html) 下载。 因为PhantomJS 是一个功能完善(虽然无界面)的浏览器而非一个 Python 库, 所以它不需要像 Python 的其他库一样安装, 但我们可以通过 Selenium 调用 PhantomJS 来直接使用。下载--解压, 然后,设置环境变量: C:\Users\cz\Downloads\phantomjs-2.1.1-windows\bin打开终端命令行, 输入: phantomjs, 能够进行到 phantomjs 命令行, 则表示安装成功
#无界面浏览器from selenium import webdriver#xpath 提取数据from lxml import etree#登录界面url='/?url=https%3A%2F%'#CTRL+单击PhantonJs,可更改位置drive=webdriver.PhantomJS()#获取urldrive.get(url)#输出页面# print(drive.page_source)#使用登录和密码框的name属性drive.find_element_by_id('userinput').send_keys('账号')drive.find_element_by_id('passwordinput').send_keys('密码')#截图drive.save_screenshot('kaixin.png')#找到登录按钮的id,单击drive.find_element_by_id('btn_dl').click()#将文件写入kaixin.htmlwith open('kaixin.html','w',encoding='utf-8') as file:file.write(drive.page_source)## #如果登录页面有验证码需要用截图来查看验证码来进行登录# #读取页面# with open('kaixin.html','r',encoding='utf-8') as file:#html=file.read()# #利用xpath找到验证码的图片连接# srr=etree.HTML(html)# imgg=srr.xpath('//div[@class="l"]/img/@src')# print(imgg)## sa=input('输入验证码:')# #清除输入框中的信息# drive.find_element_by_id('userinput').clear()# drive.find_element_by_id('passwordinput').clear()# #重新输入用户名密码和验证码并单级# drive.find_element_by_id('userinput').send_keys('账号')# drive.find_element_by_id('passwordinput').send_keys('密码')# drive.find_element_by_id('code').send_keys(sa)# drive.find_element_by_id('btn_dl').click()## drive.save_screenshot('kaixin3.png')# #验证码格式# # /interface/getcaptcha.php?key=1539574548166&keytype=login# # /interface/getcaptcha.php?key=153957579&keytype=login
登录人人网
#爬虫 登录人人网案例import requestssession=requests.session()url='/PLogin.do'data={'email':'账号','password':'密码'}response=session.post(url,data)html=session.get(url='/968293374/profile')with open('renren.html','w',encoding='utf-8') as ff:ff.write(html.text)
如果觉得《爬虫 登录开心网 登录人人网》对你有帮助,请点赞、收藏,并留下你的观点哦!