今天尝试用selenium+Beautifulsoup爬取,整体思路如下:
1.在搜索框输入搜索关键词并点击搜索(用selenium定位搜索框和 “ 搜索 “ 按钮)
2.对搜索页进行分析,首先先获取所有窗口句柄(window_handles)并跳转到搜索页(switch_into);其次判断搜索到的“ 总页数 ”(用beautifulsoup);这里有个特殊情况需要考虑:当关键词的搜索页只有1页时,是不会显示“ 总页数 ”的网页标签信息的,所以这里要添加页数判断(if...else...)
3.不管是搜索页只有一页还是有多页,都需要用到Beautifulsoup进行信息分析,然后用xlwt写入数据。
4.如果实现翻页呢,可以结合for循环以及第2步获取到的 "总页数"进行实现
注意事项
1.用selenium进行定位时,要注意你所选择的定位方式是否会随着页面而变化,例如:实现翻页动作,我们需要定位到” 下一页 ”的按钮,笔者这里选择的使用CSS_SELECTOR进行定位,因为每一页的” 下一页 ”的按钮的SELECTOR值是不变化的,读者可以自行用F12检查试一下;而如果用XPATH定位的话,你会发现每一页的XPATH值都不同,这就会导致出现“ 无法翻页 ”的问题;
2.做爬虫分析的时候,可以设置异常捕获(try...except)用于处理可能出现的异常问题;
源码
# encoding: utf-8
"""
@author 张奕滨
@create 2021-11-6 11:50
Mycsdn:https://blog.csdn.net/qq_39338064?spm=1000.2115.3001.5343
@contact: 948183482@qq.com
@software: Pycharm
@file: bili学习.py
@Version:1.0
@仅供个人学习用途,切勿用于其他用途
"""
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from selenium import webdriver
from time import sleep
import random
import time
import xlwt
import os
from bs4 import BeautifulSoup
# 获取当前用户桌面路径
def desktop_path():
return os.path.join(os.path.expanduser(