<script> function fibonacci(a, b){ var nextNum = a + b; console.log(nextNum+" is in the Fibonacci sequence"); if(nextNum < 100){ fibonacci(b, nextNum); } } fibonacci(1, 1); </script>
常用JavaScript库
用 Python 执行 JavaScript 代码的效率非常低,既费时又费力,尤其是在处理规模较大的
JavaScript 代码时。如果有绕过 JavaScript 并直接解析它的方法(不需要执行它就可以获得
信息)会非常实用,可以帮你避开一大堆 JavaScript 的麻烦事。
jQuery
是一个十分常见的库,70% 最流行的网站(约 200 万)和约 30% 的其他网站(约 2
亿)都在使用。 1 一个网站使用 jQuery 的特征,就是源代码里包含了 jQuery 入口,比如:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></
script>
Google Analytics
有一半的网站都在用 Google Analytics 2 ,它可能是网站最常用的 JavaScript 库和最受欢迎的
用户跟踪工具。其实,http://pythonscraping.com 和 http://www.oreilly.com/ 都用了 Google
Analytics。
<!-- Google Analytics -->
<script type="text/javascript">var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-4591498-1']); _gaq.push(['_setDomainName', 'oreilly.com']); _gaq.push(['_addIgnoredRef', 'oreilly.com']); _gaq.push(['_setSiteSpeedSampleRate', 50]); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script>
Google地图
var marker = new google.maps.Marker({
position: new google.maps.LatLng(-25.363882,131.044922),
map: map,
title: 'Some marker text'
});
Ajax和动态HTML
Ajax 一样,动态 HTML(dynamic HTML,DHTML)也是一系列用于解决网络问题的
技术集合。DHTML 是用客户端语言改变页面的 HTML 元素(HTML、CSS,或者二者皆
被改变)。比如,页面上的按钮只有当用户移动鼠标之后才出现,背景色可能每次点击都
会改变,或者用一个 Ajax 请求触发页面加载一段新内容。
处理重定向
from selenium import webdriver
import time
from selenium.webdriver.remote.webelement import WebElement
from selenium.common.exceptions import StaleElementReferenceException
def waitForLoad(driver):
elem = driver.find_element_by_tag_name("html")
count = 0
while True:
count += 1
if count > 20:
print("Timing out after 10 seconds and returning")
return
time.sleep(.5)
try:
elem == driver.find_element_by_tag_name("html")
except StaleElementReferenceException:
return
driver = webdriver.PhantomJS(executable_path='<Path to Phantom Js>')
driver.get("http://pythonscraping.com/pages/javascript/redirectDemo1.html")
waitForLoad(driver)
print(driver.page_source)