写一个爬虫程序,按下面的要求在我的 windows 电脑上帮我抓取微信公众号文章。
好的,我会为你编写一个完整的爬虫程序,并指导你安装所需的依赖库。我们将使用 selenium
库来控制浏览器,并使用 pandas
库来保存数据到 Excel 文件中。
首先,你需要安装以下 Python 库:
selenium
:用于浏览器自动化。pandas
:用于数据处理和保存到 Excel 文件。openpyxl
:用于 pandas
保存 Excel 文件。你可以使用以下命令来安装这些库:
pip install selenium pandas openpyxl
你还需要下载与浏览器匹配的 WebDriver。例如,如果你使用的是 Chrome 浏览器,你需要下载 ChromeDriver。你可以从以下链接下载:
ChromeDriver - WebDriver for Chrome
下载后,将 chromedriver.exe
放在你的系统路径中,或者记下它的路径以便在代码中使用。
以下是完整的爬虫程序:
import time
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from datetime import datetime
# 配置 ChromeDriver 路径
chrome_driver_path = 'path/to/chromedriver.exe' # 替换为你的 chromedriver 路径
# 配置 Chrome 选项
chrome_options = Options()
chrome_options.add_argument("--start-maximized")
# 初始化 WebDriver
service = Service(chrome_driver_path)
driver = webdriver.Chrome(service=service, options=chrome_options)
# 打开目标网站
driver.get("https://weixin.sogou.com/")
# 输入关键字并搜索
search_box = driver.find_element(By.ID, "query")
search_box.send_keys("AI")
search_box.send_keys(Keys.RETURN)
# 等待页面加载
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "sogou_vr_11002601_title_0")))
# 爬取数据
data = []
for page in range(1, 6):
print(f"正在爬取第 {page} 页...")
articles = driver.find_elements(By.CSS_SELECTOR, ".news-list li")
for article in articles:
try:
title_element = article.find_element(By.CSS_SELECTOR, "h3 a")
title = title_element.text
link = title_element.get_attribute("href")
summary = article.find_element(By.CSS_SELECTOR, ".txt-info").text
source = article.find_element(By.CSS_SELECTOR, ".account").text
data.append({
"标题": title,
"摘要": summary,
"链接": link,
"来源": source
})
except Exception as e:
print(f"跳过一篇文章,原因: {e}")
# 翻页
if page < 5:
next_button = driver.find_element(By.LINK_TEXT, "下一页")
next_button.click()
time.sleep(5)
# 关闭浏览器
driver.quit()
# 保存数据到 Excel 文件
df = pd.DataFrame(data)
current_time = datetime.now().strftime("%Y%m%d_%H%M%S")
excel_filename = f"AI_微信_{current_time}.xlsx"
df.to_excel(excel_filename, index=False)
print(f"数据已保存到 {excel_filename}")
chromedriver.exe
的路径替换到代码中的 chrome_driver_path
变量。运行过程中,你会看到浏览器自动打开并执行搜索操作,爬取数据并保存到 Excel 文件中。每爬取一页后会休眠 5 秒,直到爬取完前 5 页的数据。