1、问题发生描述:
从一个页面进行点击等 *** 作,页面跳转到第二个页面,对第二个页面中的元素,采取任何措施定位都报错,问题报错点如下:
2、出现问题的原因:
窗口句柄还停留在上一个页面,对于当前新d出的页面还没有定位,因此新页面的任何元素都定位不到
3、解决方案:
在新页面 *** 作元素之前,需添加句柄 *** 作,方式如下:
1、使用drivercurrent_window_handle #获取当前窗口句柄,添加此方法,仍报相同的错误,因此不能采用这种方式进行解决问题
2、使用driverswitch_to_window(driverwindow_handles[1]),或者 driverswitch_to_window(selfdriverwindow_handles[-1]) ,两种方式中任选一种即可找到对应的元素
添加后的代码如下:
每天记录进步一点点
闲着在家想看**,但是猛地不知道要看啥**,脑子想半天也想不出来一个好**名字!干脆直接在豆瓣**上获取最近热门的**,然后一个一个挨着看打发时间!
获取豆瓣**信息也是学爬虫的一个入门例子,不知道为啥好多人学爬虫都拿豆瓣**来练手,一个应该是爬取比较简单,另一个应该是这个平台反爬措施比较low,接下来让我们来看看怎么去实现获取豆瓣**前200个热门**信息!
1请求数据
第一步先打开豆瓣**网页,分析请求看怎样才能请求到数据。
刷新豆瓣**网页,从浏览器自带的开发工具network中XHR可以看到各种请求,其中标黄的search_subjecttype_movie这个请求就是请求**信息,下面的type_tv就是请求电视剧信息的。从右边标黄的request url中看到是请求的链接,但参数信息都被编码,用urllibparseunquote()方法来进行解码:
解码后的请求连接如图所示,猜想page_limt为每次请求到的数据量,page_start为从第几页开始请求,将这个链接在浏览器中打开来验证一下猜想。
看到返回的是一个json字符串,里面包含50条**信息,其中有名字,评分,链接等,将page_start = 0 变为1,就请求到下一个50条信息。根据链接的这个规律,可以对page_start 不断赋值,从而实现多条信息的获取!(公众号 ly戏说编程)
第二步构造请求头,即看看浏览器通过这个链接向服务器发送了什么请求参数才拿到这些json数据,打开浏览器开发者工具。
按照图中1到4步可以看到这个请求的request headers,将请求头里面的信息全部拿出来,构造为爬虫的请求头。
坑:请求头构造的时候Accept-Encoding要将br去掉。原因:Accept-Encoding用来声明浏览器支持的编码类型,一般有gzip,deflate,br 等等。但在python3的requests包中:
responsecontent 字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩 类型:bytes
reponsetext 字符串方式的响应体,会自动根据响应头部的字符编码进行解码。类型:str
但偏偏不支持br的解码,如果加上br可能造成你请求回来的是乱码!所以要去掉br!
这样通过模拟浏览器请求数据,就可以得到服务器返回的json字符串,再解析json字符串得到每一个**的详情链接。
2提取信息
在得到每一个**的链接后,依次访问每一个**的链接,然后根据关键信息所在标签用xpath进行提取。这里只对**名字、年份、导演、类型、评分进行提取。
例如提取1917,在网页右击“1917”,然后选择检查,在Elements中1917所在位置右击,选择Copy,然后Copy XPath即可拿到1917的Xpath路径,其它信息的提取 *** 作步骤一样。
但是不同**网页里面相同类型的信息所在的XPath路径可能不同,这就需要找到他们的相同处,提取相同的XPath路径,从而进行大批量提取。
比如**类型,用直接copy xpath的方法就不好使,不同**网页里面**类型所处的标签位置不同,用copy xpath拷贝出来的路径有差异,这就需要根据所在标签的property属性来获取。主要代码如下:
对每一网页链接里面的信息进行提取,这里每提取一个就停1s,为的是避免平台检测到异常访问,这样就拿到每一个**的信息,然后再将这信息保存到excel中,效果如图所示
前几名都是奥斯卡得奖**有木有!感兴趣的小伙伴快来试试!话不多说,挨着去看**咯!去哪看?去公众号 ly戏说编程 首页vip影院看,里面还有各种学习资源免费分享!
以上就是关于python+selenium怎么定位页面d窗的元素全部的内容,包括:python+selenium怎么定位页面d窗的元素、python爬虫看电影会有什么影响、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)