scrapy+selenium爬取iframe内容

接上一篇,解决完动态渲染的问题,发现还有坑,iframe内部的内容还是定位不到,网上冲浪半小时,就发现2篇比较片面的文章,通过这些碎片信息,我们最后还是成功提取到了,感谢搜索引擎。

  1. 安装selenium
pip install selenium
  1. 在scrapy项目中引入
from selenium import webdriver
  1. 在项目中使用
    def parseKCNR(self,url,folderName,id):
        browser = webdriver.Chrome()//创建浏览器对象
        browser.get(url)//传入目标url
        driver.implicitly_wait(1)//设置等待,根据实际情况配置
        browser.switch_to.frame('xreader')//转到ifram内容里面
        imgList=browser.find_elements(By.XPATH,"//div[@class='reader-container-inner']/div")//通过xpath定位,这里需要在头部引入By,from selenium.webdriver.common.by import By
        for item in imgList:
            imgurl =item.find_element(By.XPATH,"//div[@class='reader-pic-item']").get_attribute('style')
            print(imgurl)

4.好了到这里差不多就网上的教程内容了,运行一下发现提示创建浏览器对象失败

好了接下里开始解决问题

  • 安装chromedriver,因为我这里用的是browser = webdriver.Chrome()
    安装路径:(建议用淘宝的源):
    • http://chromedriver.storage.googleapis.com/index.html
    • https://npm.taobao.org/mirrors/chromedriver/

这里还要注意的就是先查看你的chrome版本,找对应版本的(实在有小版本差异,找最近的我发现好像也可以)

  • 将下载下来的压缩包接下有一个chromedriver.exe文件,将他复制到你的chrome根目录下
  • 再把这个chromedriver.exe文件复制到python根路径下

有可能你跟我一样也用了Anaconda来配置python环境,没关系,打开cmd 输入```where python````就能找到当前python环境的根路径

  • 最后还要把chrome根路径添加到系统环境变量path中去 ,这个就不多说了,大家应该都会

OK,现在就可以愉快的抓取iframe里的内容了,溜了。

你可能感兴趣的:(scrapy+selenium爬取iframe内容)