https://avatars.githubusercontent.com/u/103393591

比较简单的selenium自动化操作播放bilibili(b站)视频2020

直接放代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from selenium import webdriver
import time

driver = webdriver.Chrome(r'C:\chromedriver.exe')
urllist = [
    'https://www.bilibili.com/video/BV15f4y1m7xH?from=search&seid=9788956603997309480',
    'https://www.bilibili.com/video/BV1WA411h76h?from=search&seid=9738279009337231611',
    'https://www.bilibili.com/video/BV13c411h7k7?from=search&seid=9738279009337231611',
    'https://www.bilibili.com/video/BV1x541147u8?from=search&seid=9738279009337231611',
    'https://www.bilibili.com/video/BV17p4y1C78w?from=search&seid=9738279009337231611'
]
#视频链接
timelist=[
    311,
    598,
    669,
    568,
    507,
]
#放入自己各个视频的时长

t = 0

for url in urllist:
    try:
        driver.set_page_load_timeout(5)
        driver.get(url)
        time.sleep(10)
    except Exception :
        print("timeout")

    element = driver.find_element_by_xpath('//*[@id="bilibiliPlayer"]/div[1]/div[1]/div[10]/div[2]/div[2]/div[1]/div[1]/button[1]')#xpath抓取播放控件
    time.sleep(5)
    print('控件抓取成功')
    driver.find_element_by_xpath('//*[@id="bilibiliPlayer"]/div[1]/div[1]/div[10]/div[2]/div[2]/div[1]/div[1]/button[1]').click()#xpath定位成功后点击播放
    print('播放成功')
    time.sleep(timelist[t])
    print('下一个视频')
    t = t + 1

因为页面加载需要时间,抓取控件也需要时间,设计sleep时长看你的页面加载速度以及网速进行调整

爬虫流程及方法14(正则表达式篇)

前言

re库的实用实例如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import requests
import re
import os


a = True
while a:
    #创建一个文件夹,保存所有图片
    if not os.path.exists('./tupianLibs'):
        os.mkdir('./tupianLibs')
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'
    }
    url = "https://www.pexels.com/"
    #使用通用爬虫对整张页面进行爬取
    page_text = requests.get(url=url, headers=headers).text
    #使用聚焦爬虫将页面中所有的图片进行解析/提取
    #正则.*?表示一切内容
    #re.S单行匹配
    ex = '<a class="js-photo-link photo-item__link" style.*? >.*?<img srcset="(.*?)" class.*?></div>'
    image_src_list = re.findall(ex, page_text, re.S )
    for src in image_src_list:
        src = 'https:'+ src
        #拼接出一个完整的图片url
        image_data = requests.get(url=src, headers=headers).content
        #请求到了图片的二进制数据
        image_name = src.split('/')[-1]
        #生成图片名称
        imgPath = './tupianlbs/' + image_name
        #图片最终存储的路径
        with open(imgPath, 'W') as fp:
            fp.write(image_data)
            print('下载成功')
a = False

正则表达式详情

https://pic./2020/05/03/0baa55fd80836.png