51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1901|回复: 0
打印 上一主题 下一主题

使用selenium的webdriver动态爬取网页时遇到的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-4-4 15:21:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、浏览器驱动文件(如phantomjs.exe/chromedriver.exe)的自动读取
1、PhantomJS与chrome的区别:
          chrome不用说,就是chrome浏览器嘛,使用chromedriver.exe文件就是用来启动chrome浏览器的,当在程序中运行chromedriver.exe时会自动启动chrome浏览器(前提是电脑中已经安装了chrome浏览器)并弹出chrome浏览器窗口。当在程序中运行phantomjs.exe文件时,并不会弹出任何浏览器窗口,提交url地址获取的内容或者JavaScript脚本都会在后台运行,其实PhantomJS可以理解为一个没有界面和窗口的浏览器。

2、PhantomJS与chrome在python中如何被驱动:
         from selenium import webdriver
           driver = webdriver.chrome(“chromedriver.exe 文件所在绝对路径”)
or       driver = webdriver.PhantomJS(“phantomjs.exe文件所在绝对路径”)
           #如果将浏览器驱动文件放在python的安装目录的Script文件夹下,就可以省略括号中的参数
           driver.get("需要访问的地址")

二、driver.find_elements_by_xpath(‘xpath语句’)问题
test = driver.find_elements_by_(xpath,name...),其中括号中的xpath语句和纯粹的xpath语句有点区别,比如一般的获取<a id ="aid" href = “www.baidu.com”>a标签中的text</a>可以写xpath语句为:‘//a[@id = "aid"]/text()’,但是在selenium中的xpath语句并不能有/text(),而是用test.text属性来获得。如果要获得a标签中的href就可以用text.get_attribute("href")来获得


三、Python2.x与python3.x在此次爬虫中遇到的区别
1、中文编码问题:
python中文处理问题确实是挺麻烦的,python2.7与python3.5中在中文问题处理上相比,python3比2系列要好多了,省去了很多转换编码的麻烦情况。在我写的爬虫爬取淘宝商品信息的过程中,有一步是要通过控制台输入商品名称来获取相应的商品信息,一开始我用的是python2.7,代码语句为
value = raw_input(u"请输入商品名称:")

运行代码就出错了,注意到最后一行,还是编码的问题


在网上查了一些资料找到了解决办法,将代码修改为:
value = raw_input(u"请输入商品名称:").decode(sys.stdin.encoding)

在python3中并没有这么多问题,按照正常写就行,同样的功能代码如下:
value = input(u"请输入商品名称:")

2、模拟cmd输入语句:
或许从1中已经注意到了,在python2中用raw_input()语句实现在cmd中输入参数,python3中直接使用input()语句实现参数的输入。

3、print输出语句的区别:
         python2中的print输出语句为:print “输出内容”;python3中print语法为:print(“输出内容”),没错,就是多了个括号的区别。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-22 19:47 , Processed in 0.062491 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表