python数据采集10-采集JavaScript
程序员文章站
2022-07-02 09:25:09
...
<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)
上一篇: Java采集主机数据
下一篇: 使用QueyList采集插件采集数据
推荐阅读