最近做网络监测,需要实现两个功能:获取站点的运行状态(状态码)、获取当前页面截图(取证用)
获取运行状态,通过requests就可以了
r = requests.get(url, allow_redirects = False) //然后可以获取r.status_code
虽然之前已经知道phantomjs药丸了,但是由于可以借鉴的文章太多,学习成本好像很低的样子,就直接用了,反正实现的功能也不复杂。
首先我们是需要phantomjs这样一个无头浏览器的存在的:
太久远了我也忘记在哪里下的了,官网肯定有的。(严肃脸)
使用phantomjs有两种方式:一种是写js,通过cmd来调:
import subprocess
cmd = ‘phantomjs ehall.js “%s”‘ % ehall_url //ehall.js是一个js文档
stdout, stderr = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
print stderr
print stdout
一种可以通过selenium调用phantomjs:
b = webdriver.PhantomJS(executable_path=”PhantomJS.exe”)
b.set_window_size(1024,768) //之前没有设置window大小,导致部分网页显示不完全
b.get(turl)
elem_user = b.find_element_by_xpath(‘//*[@id=”username”]’) //通过find_element方式定位元素,因为要登录嘛
elem_pswd = b.find_element_by_xpath(‘//*[@id=”password”]’)
elem_user.send_keys(‘XXX’) //键入值
elem_pswd.send_keys(‘XXX’)
elem_sub = b.find_element_by_xpath(‘//*[@id=”login_form1″]/div[2]/input’)
elem_sub.click() //点击按钮
time.sleep(1)
b.save_screenshot(‘pic/’+filename) //保存当前截图

