【爬虫】selenium动态页面请求与模拟登录知乎

coding

一。安装selenium             pip install selenium 

二。安装相应浏览器的Driver(selenium 文档)    http://selenium-python.readthedocs.io/api.html   推荐使用Chrome

三。selenium的使用

 1# -*- coding: utf-8 -*-

2

3from selenium import webdriver

4from scrapy.selector import Selector

5

6

7#知乎的模拟登录

8 browser = webdriver.Chrome(executable_path="E:/chromedriver.exe") #路径是chromedriver.exe的存放的位置

9 browser.get("https://www.zhihu.com/#signin")

10 browser.find_element_by_css_selector(".view-signin input[name='account']").send_keys("********") #帐号

11 browser.find_element_by_css_selector(".view-signin input[name='password']").send_keys("********") #密码

12 browser.find_element_by_id("captcha").send_keys(input('请输入验证码:'))

13 browser.find_element_by_css_selector(".view-signin button.sign-button").click() #登录

14browser.quit()

15

16 实例二:

17#可以用selenium得到js加载后的html,比如这样的话可以抓取到本来抓取的不到的一些字段(淘宝的交易量等等)

18 browser = webdriver.Chrome(executable_path="E:/chromedriver.exe")

19 browser.get("https://detail.tmall.com/item.htm?spm=a230r.1.14.3.yYBVG6&id=538286972599&cm_id=140105335569ed55e27b&abbucket=15&sku_properties=10004:709990523;5919063:6536025")

20print(browser.page_source) #page_source就是js加载完的源代码

21#browser.quit()

22'''

23如果是用selenium本身的选择器(python写的,比较慢),会很慢

24所以现在转换成scrapy中的selector(他是用c语言写的,很快)

25模版,也可以嵌入scrapy中

26'''

27t_selector=Selector(text=browser.page_source)

28print(t_selector.xpath('//*[@id="J_StrPriceModBox"]/dd/span/text()').extract())

有时会遇到取不到内容的情况,看看是不是还没加载完毕,在中间sleep() 几秒就好了。

四。selenium模拟登录微博,模拟鼠标下拉

微博也有开放的API:http://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5

 1#selenium 完成微博模拟登录

2 browser = webdriver.Chrome(executable_path="E:/chromedriver.exe")

3 browser.get("http://weibo.com/")

4import time

5 time.sleep(5)

6 browser.find_element_by_css_selector("#loginname").send_keys("******")

7 browser.find_element_by_css_selector(".info_list.password input[node-type='password']").send_keys("******")

8 browser.find_element_by_css_selector(".info_list.login_btn a[node-type='submitBtn']").click()

9#下拉

10for i in range(3):

11'''三次下拉操作,这是javascript的知识 execute_script是用来执行js代码的'''

12 browser.execute_script("window.scrollTo(0, document.body.scrollHeight); var lenOfPage=document.body.scrollHeight; return lenOfPage;")

13 time.sleep(3)

五。chromedrive 不加载图片,phantomjs获取动态网页

chromedriver不加载图片:

1#设置chromedriver不加载图片

2#是固定的模板

3 chrome_opt=wibdriver.ChromeOptions()

4 prefs={"profile.managed_default_content_settings.images":2}

5 chrome_opt.add_experimental_option("prefs",prefs)

6 browser=webdriver.Chrome(executable_path="E:/chromedriver.exe",chrome_options=chrome_opt)

7 browser.get("http://weibo.com")

六。phantomjs获取动态网页:

下载地址:http://phantomjs.org/download.html 如果不能下载,复制链接到迅雷下载

淘宝的详情页实例

1 #phantomjs, 无界面的浏览器, 多进程情况下phantomjs性能会下降很严重

2 browser = webdriver.PhantomJS(executable_path="F:/迅雷下载/phantomjs-2.1.1-windows/bin/phantomjs.exe")

3 browser.get("https://detail.tmall.com/item.htm?spm=a230r.1.14.3.yYBVG6&id=538286972599&cm_id=140105335569ed55e27b&abbucket=15&sku_properties=10004:709990523;5919063:6536025")

4 print (browser.page_source)

5 browser.quit()

关于selenium的我推荐虫师的教程,还是很不错的。「UI 测试自动化selenium」汇总

本人知识学习的总结者

出处:http://www.cnblogs.com/jinxiao-pu/p/6809583.html

以上是 【爬虫】selenium动态页面请求与模拟登录知乎 的全部内容, 来源链接: utcz.com/z/509190.html

回到顶部