综合使用python爬虫技术,selenium模块动态抓取“视觉中国”网站上的图片的url

7 篇文章 0 订阅
4 篇文章 0 订阅

一、 导入模块
import time
from selenium import webdriver
from lxml import etree
本文章纯粹用来练手,于是我使用了etree,其实光使用find_elements…的方法也可以

二、开始干活
1.首先创建driver对象

driver=webdriver.Chrome()

2.打开网站

driver.get("https://www.vcg.com/creative")

3.分析
我要抓取的是VCG的creative模块用js动态加载的图片内容
发现鼠标移过最上面一层图片导航button,下面的图片会自动切换,于是使用代码
找导航条:

jss=driver.find_elements_by_css_selector("[class='jss138 jss140']")[0]

因为我发现这个导航条的类是jss138 jss140,引用了两个类,所以使用css_selector,找到了这个导航条
接下来是
找导航条里面的button:

buttons=jss.find_elements_by_xpath("./div/button")

4.开始捕获鼠标切换到每个button下面加载的图片:
使用循环:

for button in buttons:

鼠标移至该button

webdriver.ActionChains(driver).move_to_element(button).perform()

让他停两秒,保证加载顺利

time.sleep(2)

分析图片的url所在的div
他所有图片无非是两种存储路径

1.//*[@class="jss10"]/div[2]/div/a/div/div/@style
2.//*[@class="jss10"]/div[2]/div/div/div/div/div/a/@href

于是我使用lxml模块中的etree创建一个tree获取两种图片所在的div

html=driver.page_source
    tree=etree.HTML(html.encode())
    div1=tree.xpath('//*[@class="jss10"]/div[2]/div/a/div/div/@style')
    div2=tree.xpath('//*[@class="jss10"]/div[2]/div/div/div/div/div/a/@href')

其中第一种div获取到的url可以进一步分解,我这就不再做详细分解了

完整代码如下:

import time
from selenium import webdriver
from lxml import etree

driver=webdriver.Chrome()
driver.get("https://www.vcg.com/creative")
jss=driver.find_elements_by_css_selector("[class='jss138 jss140']")[0]
buttons=jss.find_elements_by_xpath("./div/button")

for button in buttons:
    webdriver.ActionChains(driver).move_to_element(button).perform()
    time.sleep(2)
    html=driver.page_source
    tree=etree.HTML(html.encode())
    div1=tree.xpath('//*[@class="jss10"]/div[2]/div/a/div/div/@style')
    div2=tree.xpath('//*[@class="jss10"]/div[2]/div/div/div/div/div/a/@href')
    print(div1)
    print(div2)
driver.close()

这是代码显示结果:
在这里插入图片描述

这是视觉中国官方(shijue.me)提供的扩展,可以让你浏览网站时方便分享或收藏喜欢的图片,扩展提供了鼠标右键单击分享、网页截图到视觉中国(shijue.me)上的快捷功能。 视觉中国图片分享工具 这是视觉中国官方(shijue.me)提供的扩展,可以让你浏览网站时方便分享或收藏喜欢的图片,扩展提供了鼠标右键单击分享、网页截图到视觉中国(shijue.me)上的快捷功能。 “shijue.me 视觉中国”是中国最具活力的视觉图片分享社区及创意设计产品社会化电商平台。依托独特的创意生态理论,为原创者和消费者提供一个互动沟通的社区,发现原创、发现美丽,收获并分享美好的创意体验。 秉承了优质的创意资源和纯正的社区血脉,全新的“shijue.me 视觉中国”愿意和您一起,用创意和想象力,重新发现一个美丽的新世界! 这里是一个关于灵感和创意的好玩的全栖互动社区,你可以在里: 分享好看的图片找到品味同好、发表原创的作品获得更多成名的机会、编辑精彩的内容和大家分享你的奇闻乐事;上传你的奇思妙想,便可以在这里找到从前期到最终、从灵感到最终的盈利的所有通经,我们帮你将它变成商品,并通过为你铺设好的渠道实现盈利;你可以买到充满创意的原创产品,并可以和它的设计师进行互动;你还可以在这里找到很多趣味相投的朋友,组合线下聚会活动;这里更是一个显现企业和品牌形象的地方。总之只要是和视觉、创意有关的想法,都可以在这里找到归属! == cvshare - 1.0.5 released 2012/11/04 - 修复标签分享,重复的bug. == cvshare - 1.0.4 released 2012/10/22 - 修复截图分享,URL编码bug - 新增截图分享后,查看按钮功能 == cvshare - 1.0.0 released 2012/10/20 - 鼠标右键分享功能 - 网页标签分享功能 - 多(组)图分享功能 - 网页可视区域、区域选择、整个网页截图分享功能 支持语言:English,中文 (简体)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值