那天有朋友找我一起抓妹子图片,像我这么正派的人,肯定是要抱着学习的目的……打开网页,哇!
话不多说,先看看网页吧!
熟练的打开网页,找到妹子图,然后F12打开开发者工具,定位,ok,图片地址找到了,so easy~!,我们写入代码看看
WTF~!
返回了个空列表?加了header也是这样,为啥呢,来打开源码看看
原来是js数据,这就麻烦了,难道先去学习下js语法,拿js文件,分析逻辑,找最终的url吗?
让我们用selenium+PhantomJS试试吧!
安装请自行百度(有些麻烦,需要下载各种浏览器的相关驱动文件,网上一堆教程)
我们先获取源码后找找刚才的标签看看效果!
吼吼~乖乖的出现了吧!
下面的流程就简单了,找到URL中翻页按钮,循环它,直到没有为止!然后写个获取图片并下载的函数,不到40行代码搞定!剩下的就是静静等待了!
完整代码和下载效果如下:
源码:
from lxml import etree
import requests,time,random
from selenium import webdriver
# 获取页面所有的图片url下载到本地
def down_img(url,num):
i=1
driver=webdriver.PhantomJS()
# driver=webdriver.Chrome()
driver.get(url)
html=driver.page_source
req = etree.HTML(html)
img_url_list=req.xpath("//div[@class='text']/p/a/@href")
for img_url in img_url_list:
try:
time.sleep(random.random())
name=img_url.split('/')[-1]
url_img='http://' + img_url[2:]
data = requests.get(url_img).content
with open(name,'wb') as f:
f.write(data)
print('成功下载第%d页的%d张图片' % num,i)
i += 1
except:
pass
k=1
url = 'http://jiandan.net/ooxx'
#查找翻页地址并循环
while k:
down_img(url,k)
driver = webdriver.PhantomJS()
# driver = webdriver.Chrome()
driver.get(url)
html =driver.page_source
req = etree.HTML(html)
page_url = "http://" + req.xpath("//a[@class='previous-comment-page']/@href")[0][2:]
if page_url:
url=page_url
k+=1
else:
print("出错了")
exit()