0


使用Python和Selenium自动化爬取 #【端午特别征文】 探索技术极致,未来因你出“粽” # 的投稿文章

文章目录

介绍:

本文章将介绍如何使用Python的Selenium库和正则表达式对CSDN的活动文章进行爬取,并将爬取到的数据导出到Excel文件中。

界面展示

在这里插入图片描述

知识点详解

python 知识点详解

导入相关模块

首先,我们需要导入以下模块:

import re                    # 用于处理正则表达式的模块import time                  # 用于暂停执行的模块import pandas as pd          # 用于创建和操作数据表格的模块from selenium import webdriver                      # 用于控制浏览器的模块from selenium.webdriver.chrome.service import Service    # 用于创建ChromeDriver服务的模块from selenium.webdriver.common.by import By                 # 用于定位元素的模块from selenium.webdriver.common.action_chains import ActionChains    # 用于模拟鼠标操作的模块from selenium.webdriver.common.keys import Keys            # 用于模拟键盘操作的模块
  • re是Python内置的正则表达式模块,用于处理字符串匹配和搜索。
  • time模块提供了一些与时间相关的函数,我们可以使用它来暂停程序的执行。
  • pandas是一个强大的数据分析库,用于创建和操作数据表格。
  • selenium是一个用于自动化浏览器操作的库,我们使用它来控制Chrome浏览器进行页面爬取。

设置Chrome驱动程序的路径

在代码中指定Chrome驱动程序的路径:

driver_path ='path_to_chrome_driver'

请将

path_to_chrome_driver

替换为实际的Chrome驱动程序的路径。

创建ChromeDriver服务和启动Chrome浏览器

创建ChromeDriver服务和启动Chrome浏览器:

service = Service(driver_path)# 创建ChromeDriver服务
options = webdriver.ChromeOptions()# 创建Chrome浏览器选项
options.add_argument('--headless')# 可选设置,无界面模式
driver = webdriver.Chrome(service=service, options=options)# 启动Chrome浏览器

这样就成功创建了ChromeDriver服务,并启动了Chrome浏览器。

发送GET请求获取网页内容

使用

driver.get(url)

方法发送GET请求,获取CSDN活动页面的网页内容:

url ='https://activity.csdn.net/creatActivity?utm_source=324486289&id=10478&spm=1011.2433.3001.6900'
driver.get(url)

模拟向下滚动加载更多内容

为了获取页面的全部内容,我们需要模拟向下滚动加载更多内容。这里我们使用JavaScript脚本来执行滚动操作:

whileTrue:
    prev_height = driver.execute_script('return document.body.scrollHeight')
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(5)
    new_height = driver.execute_script('return document.body.scrollHeight')if new_height == prev_height:break

代码使用了一个循环来不断执行滚动操作,直到页面没有新内容出现为止。

获取完整的HTML内容

在滚动加载完所有内容后,我们可以通过

driver.page_source

属性获取完整的HTML内容:

html_content = driver.page_source

关闭浏览器

完成所有爬取操作后,记得关闭浏览器:

driver.quit()

使用正则表达式提取文章信息

使用正则表达式模式来提取CSDN活动文章的信息,并将结果存储到

matches

列表中:

pattern =r'<div class="article-tit"><a href="(.*?)" target="_blank">(.*?)<\/a><\/div><div class="article-dec">(.*?)<\/div><div class="article-status">.*?<a href="(.*?)" target="_blank" class="text">(.*?)<\/a>.*?<span class="text">发布博客 (.*?)<\/span>'
matches = re.findall(pattern, html_content)

注意 : 确保正则表达式模式与目标网页的HTML结构相匹配。

构建数据表格和导出到Excel

我们使用Pandas库来构建数据表格,并将爬取到的数据导出到Excel文件中:

data =[]formatchin matches:
    url =match[0]
    title =match[1]
    content =match[2].strip()
    author_url =match[3]
    author =match[4]
    publish_date =match[5]

    data.append({'标题': title,'链接': url,'内容': content,'作者': author,'发布日期': publish_date,'作者链接': author_url
    })

df = pd.DataFrame(data)# 创建数据帧
df.sort_values(by='作者', inplace=True)# 按照作者进行排序

output_path ='output.xlsx'# 导出路径with pd.ExcelWriter(output_path)as writer:
    df.to_excel(writer, sheet_name='文章列表', index=False)# 导出到Excel文件print('结果已导出到Excel文件:', output_path)

扩展知识点

python 扩展知识点

  1. Selenium:Selenium是一个用于自动化浏览器操作的工具。通过Selenium可以模拟用户在浏览器中的行为,例如打开网页、点击按钮、填写表单等。它支持多种浏览器,包括Chrome、Firefox、Safari等。
  2. 正则表达式:正则表达式是一种强大的文本处理工具,用于在字符串中匹配和提取特定模式的文本。它可以通过一些特殊字符和语法规则来描述字符串的模式,并进行匹配操作。在爬虫中,正则表达式常用于从网页源代码中提取目标信息。
  3. Pandas:Pandas是Python中常用的数据分析和数据处理库。它提供了丰富的数据操作和处理功能,可以方便地进行数据清洗、转换、合并等操作。在本文中,我们使用Pandas来构建数据表格并导出到Excel文件中。

代码示例

完整代码示例如下所示:

# 导入相关模块import re
import time
import pandas as pd
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 设置Chrome驱动程序的路径
driver_path ='path_to_chrome_driver'# 创建ChromeDriver服务
service = Service(driver_path)# 启动Chrome浏览器
options = webdriver.ChromeOptions()
options.add_argument('--headless')# 无界面模式,可选设置
driver = webdriver.Chrome(service=service, options=options)# 发送GET请求获取网页内容
url ='https://activity.csdn.net/creatActivity?utm_source=324486289&id=10478&spm=1011.2433.3001.6900'
driver.get(url)# 模拟向下滚动加载更多内容whileTrue:
    prev_height = driver.execute_script('return document.body.scrollHeight')
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(5)
    new_height = driver.execute_script('return document.body.scrollHeight')if new_height == prev_height:break# 获取完整的HTML内容
html_content = driver.page_source

# 关闭浏览器
driver.quit()# 使用正则表达式模式提取文章信息
pattern =r'<div class="article-tit"><a href="(.*?)" target="_blank">(.*?)<\/a><\/div><div class="article-dec">(.*?)<\/div><div class="article-status">.*?<a href="(.*?)" target="_blank" class="text">(.*?)<\/a>.*?<span class="text">发布博客 (.*?)<\/span>'
matches = re.findall(pattern, html_content)# 构建数据表格
data =[]formatchin matches:
    url =match[0]
    title =match[1]
    content =match[2].strip()
    author_url =match[3]
    author =match[4]
    publish_date =match[5]

    data.append({'标题': title,'链接': url,'内容': content,'作者': author,'发布日期': publish_date,'作者链接': author_url
    })# 创建数据帧
df = pd.DataFrame(data)# 按照作者进行排序
df.sort_values(by='作者', inplace=True)# 导出到Excel文件
output_path ='output.xlsx'with pd.ExcelWriter(output_path)as writer:
    df.to_excel(writer, sheet_name='文章列表', index=False)print('结果已导出到Excel文件:', output_path)

最终效果

在这里插入图片描述

总结

本文介绍了使用Selenium和正则表达式爬取CSDN的活动文章信息,并将爬取到的数据导出到Excel文件中。 赶快去试试吧!!!


本文转载自: https://blog.csdn.net/qq_33681891/article/details/131375899
版权归原作者 全栈若城 所有, 如有侵权,请联系我们删除。

“使用Python和Selenium自动化爬取 #【端午特别征文】 探索技术极致,未来因你出“粽” # 的投稿文章”的评论:

还没有评论