爬虫初探(二)爬取动态网页照片存入本地

前言

本人初学爬虫练习写的爬虫代码,如有什么问题和建议,欢迎留言交流!


一、什么是动态网页?

  • 静态网页:存粹的HTML格式的网页,没有后台数据库
    、不含程序和不可交互的网页;
  • 动态网页:与静态网页相对的,可以跟后台数据库进行交互、数据传递。
  • 最后,不要将动态网页跟页面是否有动感混为一谈,重点在于网页是否采用了动态网页技术,是否可以交互。

二、具体步骤

1. 如何爬取动态网页上的数据

  • 对于静态网页,使用requests等库可以很方便的得到它的网页源码,然后提取出想要的信息。但是对于动态网页,情况就要复杂很多,这种页面的源码往往只有一个框架,其内容都是由JavaScript渲染出来的。这时候,我们就可以使用selenium来直接驱动浏览器进行爬取。

    selenium是一个自动化测试工具,利用它可以驱动浏览器进行一系列操作,并且可以得到当前呈现的网页的源码,对动态页面的爬取非常有效。

  • 爬取动态网页上的数据,可分为两种情况:

  1. 如果从爬取的HTML文件中分析得知,我们所爬取的文件的url跟页码有关系,我们可以根据规律自己构造url来爬取文件(下面的例子就是这一种情况);
  2. 如果从爬取的HTML文件中分析发现,文件url是固定不变的或者跟页码没有关系,这时候需要简单的模拟浏览器点击行为来请求网页再爬取,这种效率相对比较慢,不适合多页爬取的情况。

爬取动态网站的关键点是抓包分析。只要能从包中分析出关键的数据,剩下写爬虫的步骤就和写静态网页的爬虫一般无二了。

2.爬取网页数据需要用到的库

  1. PhatomJS是一个没有界面的浏览器,用它来读取JS加载的页面,具体下载方式可百度,他不是python的第三方库,需要下载自己添加环境变量;当然也可以使用Chrome、firefox、IE等。
  2. Selenium是python的第三方库,命令行输入:pip install selenium下载,它可以模拟用户对浏览器进行一些操作
  3. Phatom JS + Selenium抓取动态网页
  4. 使用requests库获取图片
  5. 使用beautifulSoup解析抓取的网页内容
  6. 使用os库创建文件和获取文件夹中的文件名称列表

代码如下(示例):

import os
import requests
from bs4 import BeautifulSoup
from selenium import webdriver

# 网页url,该url和页码存在规律,下一页的url是将后面的offset=0改为offset=100,具体可自己测试
WEB_URL = 'https://music.163.com/#/artist/album?id=101988&limit=100&offset=0'
# 保存图片的文件夹
FOLDER_PATH = 'D:/BeautifulPicture'
# 应对服务器反爬机制(会根据User-Agent辨别是浏览器访问还是代码访问,代码访问会被拒绝,所以需要使用headers伪装一下)的请求头,这里我们用的是PhatomJS浏览器,所以不需要
HEADERS = {
   
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'}


class AlbumCover:
    def __init__
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值