Python爬虫练习四:利用selenium爬取煎蛋网的妹子图

    目标网址:http://jandan.net/ooxx。

    经研究发现,煎蛋网设置了大量的反爬虫机制(果然妹子是第一生产力,网站被爬的痛了),隐藏了图片地址,搞了半天没找出规律。心一横,采取曲线路线,成功爬取大量妹子图~害羞

    selenium可以模仿人操作浏览器,从而达到通过与浏览器交互的方式,使服务器上的反爬虫机制失效。但这种方式也有其缺点:1、必须要打开浏览器,程序模拟人对浏览器的操作 2、效率偏低,遇到js脚本多的时候,网站加载时间长(本例的煎蛋网就是,加载网站效率低下,或许这也是反爬虫机制之一?是真的低,一分钟三四十张,要是想全爬下来,这种方式不太合适)3、需要下载对应浏览器的驱动,我用的是谷歌浏览器,对应的是chromedriver.exe,谷歌驱动下载地址http://chromedriver.storage.googleapis.com/index.html,查看notes.txt选择对应的版本,将exe放入python安装目录)

    本人采用selenium与requests相结合的方式,selenium获得全部在浏览器加载的元素,用美丽汤解析获得图片地址与下一页网址(此处其实也可以采用selenium自带的click函数访问下一页,selenium的功能很强大,还有很多没有利用),再用requests访问图片获得图片内容并下载图片。    

代码如下:

import requests
from bs4 import BeautifulSoup
from selenium import webdriver

#输入本页面soup 打开下一页
def nextpage(soup):
    text=soup.select('.previous-comment-page')
    nextpageurl=text[0]['href']
    browser.get(('http:'+nextpageurl))

#解析soup并下载
def downimg(soup,n):
    text = soup.select('.view_img_link')
    jpglist = []
    for i in text:
        jpglist.append(i['href'])
    for i in jpglist:
        temurl='http:'+str(i)
        try:
            tempres=requests.get(temurl,timeout=5)
        except requests.exceptions.ConnectionError:
            print('当前图片无法下载')
            continue
        file_name = "E:\\testimgfile" + '\\' + str(n)+".jpg"  # 拼接图片名
        fp = open(file_name, 'wb')
        fp.write(tempres.content)  # 写入图片
        n=n+1
    return n
url='http://jandan.net/ooxx'
#打开浏览器并登陆目标网址
browser=webdriver.Chrome()
browser.get(url)
#下载50+张图片
n=0
while n<50:
    soup = BeautifulSoup(browser.page_source, 'html.parser')
    downimg(soup)
    n=nextpage(soup,n)
browser.close()
初学python与爬虫,要学习的还很多。煎蛋网以后还会尝试用更高效的方式来爬取测试的~




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值