Python 爬取百度图片里面的 银行卡 相关图片
简单整理一下思路。
先用 selenium 定位image 的xpath,一般图片的标签都是 img,具体的话可以直接 打开对应的浏览器 F12 找一下
然后 用 get_attribute 方法 获取 标签内 属性的值。需要具体看一下img 对应的url是哪个属性。
获取到url 之后,使用 requests.get(url)拿到对应的数据
然后把 images write 到指定的路径下就可以了
直接上代码
# -*- coding: utf-8 -*-
import time
from selenium import webdriver
import requests
driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(20)
driver.get("https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&sf=1&fmq=1389861203899_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&ala=6&ori_query=%E9%93%B6%E8%A1%8C%E5%8D%A1&fr=ala&ala=1&alatpl=normal&pos=2&oriquery=%E9%93%B6%E8%A1%8C%E5%8D%A1&alaTag=0&&word=%E9%93%B6%E8%A1%8C%E5%8D%A1%20%E5%82%A8%E8%93%84%E5%8D%A1")
time.sleep(1)
i=0
for image in driver.find_elements_by_tag_name("img"):
print (image.get_attribute("data-imgurl"))
a = image.get_attribute("data-imgurl")
try:
b = a.split('/')
except:
continue
filename = 'D:\Python脚本\爬虫实战\img\\' + b[-1]
print(filename)
if not filename.endswith(".jpg") or filename.endswith("jpeg") or filename.endswith(".png"):
filename = filename+'.png'
img = requests.get(a)
print(img.content)
try:
with open(filename,"wb") as f:
f.write(img.content)
except:
filename = str(i) + '.png'
with open(filename,"wb") as f:
f.write(img.content)