摘要:本篇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频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号