HTML处理

一、反爬策略:
1、请求头:
—user-agent
—referer
—cookie
2、访问频率限制。
—代理池
—再用户访问高峰期进行爬取,冲散日志。12-13 7-10
—设置等待时长。time.sleep(3)
3、ajax异步请求,用接口获取数据。
4、能一次性获取的数据,绝不发送第二次请求(获取数据的过程中尽量减少请求次数。)
5、页面内容是js代码。
selenium+phantomjs的组合进行页面内容的获取。
二、html页面的技术

1、js:
	页面在请求html的过程中,服务器返回html,同时还会请求js文件。
2、jqery:js的库,方便js开发。
3、ajax:web的异步请求技术
	同步请求,异步请求。

三、selenium和phantomjs
1、什么是selenium?
selenium一个web自动化测试工具。【但是它本身是不带浏览器】。这个工具其实就是作为一些外部工具驱动来使用的,可以控制一些外部应用来完成自动化测试。
2、phantomjs:他其实就是一个内置无界面浏览器引擎。–无界面可以提高程序运行速度。
因为phantomjs是一个浏览器引擎,所以他最大的功能就是执行页面的js代码。

	3.安装selenium和phantomjs?
		selenium安装:pip install selenium==2.48.0
		phantomjs安装:百度phantomjs镜像--->下载一个Windows版本的————>phantomjs-2.1.1-windows.zip  
		
		可视化的chrome浏览器插件:---chromedriver安装:
		下载:百度:chromedriver镜像
			(1)保证chrome是正版。
			(2)查看自己chrome的版本号
			(3)找一个和自己版本号最接近的版本下载。

一、selenium的三种等待:
1、强制等待:不管页面是否加载出来,强制让进程等待。
time.sleep(2)
2、隐式等待:driver.implicitly_wait(20)
设置20秒的最大等待时长,他等待的结束条件是:等待到浏览器全部加载完成完成为止,全部加载可以理解为,浏览器不在装圈圈。
弊端:页面的加载其实不单单是页面html,重要还有一些页面静态资源,而静态资源的加载是最耗时。这些静态资源对我们爬取数据又没什么作用,所以隐式等待其实效率并不高。
3、显示等待:满足一些内置的等待条件,这要这些条件满足,就等待结束。这些条件比如:特定页面元素加载出来。

	创建显示等待的步骤:
		from selenium.webdriver.support.wait import WebDriverWait
		from selenium.webdriver.support import expected_conditions as EC
		from selenium.webdriver.common.by import By
		
		1、创建wait对象:
			wait = WebDriverWait(
				driver = 作用的哪个驱动,
				20,最大等待时长
				0.5,每隔多少秒做页面扫描
			)
		2.在之前selenium使用步骤的等待位置:
			wait.until(EC.presence_of_element_located(
					locator = 定位器对象。
			))--->返回值是一个webelement对象(locator对象所定位的哪个webelement)
			定位器对象是一个元组。
			locator = (By.xpath,'xpath表达式')
						By.ID
						By.CSS_SELECTOR
			
			
		文档:selenium的三种等待.note

链接:http://note.youdao.com/noteshare?id=8f6a0765e4017a4140a05485a9d80a48&sub=48D9761ED13A49EDAC64D180C8340613

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值