0


selenium爬虫框架爬取某壁纸网站

基础知识

  1. python基础语法
  2. 面向对象基础
  3. html基础
  4. xpath基础
  5. selenium框架的基本使用

环境配置

  1. request库 pip install request ‐i https://pypi.douban.com/simple

  2. lxml库 pip install lxml ‐i https://pypi.douban.com/simple

    3.安装浏览器xpath插件

     打开谷歌浏览器扩展
    

将压缩包拖进扩展程序界面

会出现报错信息,一定要点进去之后删除,然后重启浏览器,ctrl+shift+x打开xpath插件,作用如图(语法可以自行查看别人的博客):

开始爬虫

目的:爬取“美女图片”分类下的所有图片

这次爬虫主要就是用selenium驱动真实浏览器(可以无界面运行)对目标网站进行请求,然后得到网页源代码,通过xpath进行解析,得到目标图片的url以及名称

简单分析目标网站

首先,进入想爬取的网站之后,找一个目标分类,F12打开开发者工具,选中一张图片,查看其所在源代码前面的标签,然后写出xpath解析

//img/@data-original

之后的名字也同样在一个标签下:

//img/@alt

确定这两个xpath解析没有问题之后,然后再看一下 下一页的链接:

https://www.bizhi88.com/c1/2.html

之后直接跳到最后:

https://www.bizhi88.com/c1/25.html

但是有一个问题就是,刚开始进来的时候第一页的连接是:

https://www.bizhi88.com/c1/

我感觉,这可能是个反爬吧hh,不过没关系,输入链接:

https://www.bizhi88.com/c1/1/html

之后我发现还是可以访问第一页

那就不管了,反正selenium可以驱动无界面浏览器。

写函数

获取浏览器对象:

注意path要改成你的浏览器的路径

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def get_browser():
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    path = r'C:\Program Files\Google\Chrome\Application\chrome.exe'
    chrome_options.binary_location = path
    bro = webdriver.Chrome(chrome_options=chrome_options)
    return bro

下载每一张图片:

import urllib.request

def download_img(url, name):
    urllib.request.urlretrieve(url, name)

url是每一张图片的地址,name是刚刚说的alt下的文本

获取每一页的源代码:

from lxml import etree

def print_result_every_page(index):
    browser = get_browser()
    browser.get(base_url+str(index)+'.html')
    content = browser.page_source
    tree = etree.HTML(content)
    result = tree.xpath('//img/@data-original')
    name = tree.xpath('//img/@alt')
    for le in range(0, len(result)):
        print("downloading:"+name[i])
        download_img(result[le], './downloads/'+name[le]+'.jpg')
        print("Over!")
        print()

base_url 是一个全局变量

base_url = 'https://www.bizhi88.com/c1/'

index是传入的页码

至于download_img(result[le], './downloads/'+name[le]+'.jpg')中的文件名:

./downloads是将下载的图片存在和代码文件同一目录下的文件夹中,以便管理

运行print_result_every_page


for i in range(1, 26):
    print('downloading page' + str(i))
    print_result_every_page(i)

print("ALL OVER!!!")

建议看的爬虫网课

标签: 爬虫 selenium python

本文转载自: https://blog.csdn.net/weixin_71425546/article/details/129782504
版权归原作者 不想加班呀 所有, 如有侵权,请联系我们删除。

“selenium爬虫框架爬取某壁纸网站”的评论:

还没有评论