爬取糗事百科段子内容、热图、视频并保存到本地

爬取糗事百科段子内容、热图、视频

1、以追加的方式保存段子内容到doc文件中

2、保存图片、视频到指定路径

3、获取窗口句柄、切换页面窗口、返回页面窗口

4、获取标签属性值

 

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Author : Lan.lei

from selenium import webdriver

import time

import requests

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

class Qiushi:

#爬取段子信息并保存到文件中

def duanzi(self,driver):

#点击段子

driver.get('https://www.qiushibaike.com/text/')

time.sleep(2)

m=0

# 以追加的方式打开文件

file = open('D:/test.doc', 'a')

# 写入前先清空文件内容

file.truncate()

while m<25:

#获取段子作者

author=driver.find_element_by_xpath("//*[@id='content']/div/div[2]/div["+str(m+1)+"]/div[1]/a[2]/h2").text

#获取段子内容

content=driver.find_element_by_xpath("//*[@id='content']/div/div[2]/div["+str(m+1)+"]/a[1]/div/span").text

#获取当前句柄

currentWindow=driver.current_window_handle

#检查是否有查看全文按钮

try:

driver.find_element_by_xpath("//*[@id='content']/div/div[2]/div[" + str(m + 1) + "]/a[1]/div/span[2]").click()

time.sleep(2)

#获取所有的窗口句柄

all_handles=driver.window_handles

#切换到新页面

#driver.switch_to_window(all_handles[-1]) ---也可切换到新页面

driver.switch_to_window(all_handles[1])

#获取新的句柄

newWindow = driver.current_window_handle

#获取段子所有内容

content=driver.find_element_by_xpath("//*[@id='content']/div/div[2]/div[2]/div[1]/div").text

# 再切换到原来的页面

if newWindow!=currentWindow:

driver.switch_to_window(currentWindow)

except:

pass

#拼接作者和段子内容,同时去掉头尾的空格,加换行

duanziInfo="第"+str(m+1)+"个段子---"+author.strip()+":"+content.strip()+"\n"

#将内容写入文件

file.write(duanziInfo)

print duanziInfo

m=m+1

file.close()

#获取热图并将图片下载到本地

def get_picture(self,driver):

#点击热图

driver.get('https://www.qiushibaike.com/imgrank/')

#每页展示了25张图片

m=0

while m<25:

try:

#获取图片作者

author=driver.find_element_by_xpath("//*[@id='content']/div/div[2]/div["+str(m+1)+"]/div[1]/a[2]/h2").text

#获取图片链接,get_attribute('src')获取img标签中src的属性值

img_src=driver.find_element_by_xpath("//*[@id='content']/div/div[2]/div["+str(m+1)+"]/div[2]/a/img").get_attribute('src')

#通过requests请求获取图片

img=requests.get(img_src).content

# 定义图片路径和名称

fileName = 'D:/test/' + author + '.jpg'

file = open(fileName, 'wb')

#保存图片

file.write(img)

file.close()

time.sleep(1)

print "第"+str(m+1)+"张图片地址----"+author+":"+img_src

except:

print u"爬取第"+str(m+1)+"张图片失败"

m=m+1

#爬取视频并保存到本地

def get_video(self,driver):

#点击视频链接

driver.get('https://www.qiushibaike.com/video/')

m=0

while m<20:

try:

#获取作者

author=driver.find_element_by_xpath("//*[@id='content']/div/div[2]/div["+str(m+1)+"]/div[1]/a[2]/h2").text

#获取视频链接

videoPath=driver.find_element_by_xpath("//*[@id='content']/div/div[2]/div["+str(m+1)+"]/video/source").get_attribute("src")

#获取视频

video=requests.get(videoPath).content

#定义视频保存路径

fileName='d:/test/'+author+'.mp4'

file=open(fileName,'wb')

file.write(video)

file.close()

print author+':'+videoPath

except:

print u"爬取第"+str(m+1)+"个视频失败"

m=m+1

if __name__=='__main__':

driver = webdriver.Chrome()

driver.maximize_window()

q=Qiushi()

# q.duanzi(driver)

q.get_picture(driver)

# q.get_video(driver)

driver.quit()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值