0


基于selenium的简单爬虫示例

基于selenium的简单爬虫示例

文章目录

一、前言

​现在进入了大数据时代,很多的需求都需要数据支撑。不从市场需求的角度来说,单单就技术这一方面举例,ai模型的训练就需要数据。所以说,爬虫是一个关键的技术,博主就在此分享一个爬虫示例,如果有用的话就点个赞吧,爱学习的你真棒!

二、声明

​首先本项目仅供学习交流,只是一个小demo还有待完善,不得用于其他商业用途哦。

三、为什么用selenium?

​博主刚开始接触爬虫时用的是requests库,但是现在很多网站有反爬机制,request库get到的东西不全。selenium库模拟的是网站的打开、关闭等操作,会获得网站的所有的信息,不会因为反爬而丢失信息

四、代码和示例结果

​点击下方链接获取代码和示例结果
https://github.com/huazhan2003/douyin_spider

五、项目需求和思路流程

1、需求

​我们现在要爬取某音上某一个关键字的视频信息以及该视频发送者(达人)的信息,所需要的信息有以下几个维度:达人视频标题、达人视频链接、达人昵称、达人粉丝量、达人抖音号、简介、达人主页链接

2、思路流程

​以下是博主的思路,仅供参考:

  • 打开输入关键词后的网页
  • 滑动网页,保证加载更多的视频
  • 获取所有的视频链接
  • 进入每一个视频链接,获取视频标题和达人主页链接
  • 最后进入每一个达人主页链接,获取达人的具体信息

六、代码讲解

​博主只对部分重要代码进行讲解,可以对着我的github链接来看。首先博主说一下,每一个html文件的元素都有其对应的selector和xpath,用于定位该元素的位置,你可以把他们想为文件的路径。

1、滑动网页的实现

# driver = webdriver.Chrome()# driver.get(f'https://www.douyin.com/search/{key_word}?type=video')# 滑动操作defdrop_down(down_step):
    time.sleep(10)# 执行页面滚动操作for x inrange(1,100,4): 
        j = x /9# document.documentElement.scrollTop 指定滚动条的位置# document.documentElement.scrollHeight 获取浏览器页面的最大高度
        js ='document.documentElement.scrollTop = document.documentElement.scrollHeight * %f'% j
        driver.execute_script(js)
        time.sleep(2)

​driver自带方法execute_script接受两个参数,分别为document.documentElement.scrollTop(指定滚动条的位置),document.documentElement.scrollHeight(获取浏览器页面的最大高度)。通过这两个参数,我们可以把driver.get到的网页进行滑动。

2、视频链接的获取

# 获得所有要爬取的视频链接
lis = driver.find_elements(By.CSS_SELECTOR,'#search-content-area > div > div.HHwqaG_P > div:nth-child(2) > ul li')for li in lis:
    li_url = li.find_element(By.CSS_SELECTOR,'a').get_attribute('href')print(li_url)
    li_urls.append(li_url)

​在这里,我们使用find_elements(注意s结尾)获取当前网页CSS_SELECTOR‘#search-content-area > div > div.HHwqaG_P > div:nth-child(2) > ul li’的所有元素。接下来,我们在每一个li元素中,通过find_element方法找到视频的链接,相当于我们使用两次的定位来获得每一个视频的链接。

3、其余信息的获取,以达人主页信息为例

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

defget_home_page(url, wait_time):
    home_info =[]# 达人主页信息# 设置 Chrome 为无头模式
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')# 启动 Chrome 浏览器
    driver = webdriver.Chrome(options=chrome_options)try:# 打开网页
        driver.get(url)# 等待页面加载(你可能需要根据页面实际情况调整等待时间)
        driver.implicitly_wait(wait_time)# 获取粉丝数量
        fans_element = driver.find_element(By.XPATH,'//*[@id="douyin-right-container"]/div[2]/div/div/div[2]/div[2]/div[2]/div[2]/div[2]')
        fans_text = fans_element.text
        home_info.append(fans_text)# 获取抖音号
        id_element = driver.find_element(By.XPATH,'//*[@id="douyin-right-container"]/div[2]/div/div/div[2]/div[2]/p/span[1]')id= id_element.text
        home_info.append(id)# 获取主页简介
        summary_element = driver.find_element(By.XPATH,'//*[@id="douyin-right-container"]/div[2]/div/div/div[2]/div[2]/div[3]/div/span/span/span/span/span/span')
        summary = summary_element.get_attribute('innerText')
        home_info.append(summary)
        driver.close()finally:# 关闭浏览器
        driver.quit()return home_info

​原理同视频链接一样,只是我们在这里是通过xpath来提取信息,而不是selector来提取信息。注意每次打开网页要加上driver.close(),防止网页积存过多。

标签: selenium 爬虫

本文转载自: https://blog.csdn.net/qq_73075805/article/details/135752778
版权归原作者 赫兹先生 所有, 如有侵权,请联系我们删除。

“基于selenium的简单爬虫示例”的评论:

还没有评论