Pyhton编程实践:python爬虫--下载煎蛋网妹子图到本地
小职 2017-07-20 来源 :网络 阅读 777 评论 0

摘要:本篇Pyhton编程实践教程将为大家讲解Pyhton编程的知识点,看完这篇文章会让你对Python编程的知识点有更加清晰的理解和运用。

本篇Pyhton编程实践教程将为大家讲解Pyhton编程的知识点,看完这篇文章会让你对Python编程的知识点有更加清晰的理解和运用。

 

#coding:utf-8

"""

下载煎蛋妹子到本地,通过selenium、正则表达式、phantomjs、Beautifulsoup实现

"""

 

import re

import os

 

from selenium import webdriver

from selenium.webdriver.support.wait import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.by import By

from selenium.common.exceptions import TimeoutException

from bs4 import BeautifulSoup

from urllib import urlretrieve

 

#解决谷歌浏览器正受到自动测试软件的控制

# options = webdriver.ChromeOptions()

# options.add_argument('disable-infobars')

 

url = '//jandan.net/ooxx'

# driver = webdriver.Chrome(chrome_options=options)

driver = webdriver.PhantomJS()

wait = WebDriverWait(driver, 30)

 

#下载的煎蛋妹子保存的文件夹

img_save_file = 'images'

 

#获取总页数。打开煎蛋网-妹子图默认页面可以获取到总页数

def get_default_page_num():

    try:

        driver.get(url)

        page_element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.current-comment-page')))

        return page_element.text

    except TimeoutException:

        get_default_page_num()

 

#获取图片的url

def get_img_url(page_number):

    img_url_list = []

    url = r'//jandan.net/ooxx/page-'+ str(page_number) + r'#comments'

    print url

    # url = '//www.baidu.com'

    html = driver.get(url)

    try:

        driver.get(url)

        wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#comments > ol img')))

    except TimeoutException:

        print "打开页面失败,重新加载该页面"

        get_img_url(page_number)

 

    #获取页面html元素

    html = driver.page_source

    #通过BeautifulSoup解析

    soup = BeautifulSoup(html, 'html.parser')

    #找出所有为img的标签

    imgs = soup.find_all('img')

    #gif图片需要获取ora_src属性,才是完整的gif图片。has_attr 判断是否有某个属性,attrs可以获取属性值

    for img in imgs:

        if img.has_attr('org_src'):

            img_url = img.attrs['org_src']

        else:

            img_url = img.attrs['src']

        img_url_list.append(img_url)

    return img_url_list

 

#下载图片,通过urllib的urlretrieve实现

def download_img(img_url):

    img_name = img_url.split('/')[-1]

    img_save_path = img_save_file + '/' +img_name

    urlretrieve(img_url, img_save_file + '/' + img_name)

 

#创建图片存储所在的文件夹

def add_img_save_file(img_save_file):

    if os.path.exists(img_save_file):

        pass

    else:

        os.makedirs(img_save_file)

 

def main():

    add_img_save_file(img_save_file)

    #通过正则表达式提取当前的页数

    partner = re.compile(r'(\d+)')

    content = get_default_page_num()

    total_pages = partner.search(content).group()

 

    for i in range(1, int(total_pages) + 1):

        print "正在下载第" + str(i) + '的图片,url为:',

        img_url_list = get_img_url(str(i))

        for img_url in img_url_list:

            download_img(img_url)

 

if __name__ == '__main__':

main()

以上,关于Pyhton的全部内容讲解完毕啦,欢迎大家继续关注!更多关于Python的干货请关注职坐标Python频道!

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程