suneryzgg123 发表于 2024-1-12 21:20

工作需要写了段爬取网页发布公告内容的代码,怎么才能让它拥有点击标题进入跟翻页

只写了一点点简陋的代码,只能爬取指定网页内的文本内容,但是我要爬取的内容需要点击标题进入才行,还有翻页这个难题,有大手子帮忙瞅瞅吗?
import requests
from bs4 import BeautifulSoup
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
from datetime import datetime

def get_web_content(url, keywords, start_date, output_dir):
    try:
      # 发送GET请求
      response = requests.get(url)
      # 检查响应状态码
      if response.status_code == 200:
            # 解析HTML内容
            soup = BeautifulSoup(response.content, 'html.parser')
            # 获取所有文本内容
            text_content = soup.get_text()
            # 检查关键词
            if keywords:
                text_content = filter_keywords(text_content, keywords)
            # 检查发布时间
            if start_date:
                text_content = filter_by_date(text_content, start_date)
            # 保存内容到文件
            save_to_file(text_content, output_dir)
            messagebox.showinfo("成功", "内容获取成功并保存到 " + output_dir)
      else:
            messagebox.showerror("错误", "无法获取网站内容,状态码:" + str(response.status_code))
    except Exception as e:
      messagebox.showerror("错误", "发生异常:" + str(e))

def filter_keywords(content, keywords):
    # 在内容中筛选关键词
    return "\n".join()

def filter_by_date(content, start_date):
    # 在内容中筛选发布时间
    lines = content.split("\n")
    filtered_lines = []
    for line in lines:
      if is_date_after(line, start_date):
            filtered_lines.append(line)
    return "\n".join(filtered_lines)

def is_date_after(line, start_date):
    # 检查行中是否包含日期,并判断是否在指定日期之后
    try:
      date_str = line.split()
      date = datetime.strptime(date_str, '%Y-%m-%d')
      return date >= start_date
    except Exception as e:
      return False

def save_to_file(content, output_dir):
    # 保存内容到文件
    with open(output_dir, 'w', encoding='utf-8') as file:
      file.write(content)

def main():
    # 创建GUI窗口
    window = tk.Tk()
    window.title("网站内容获取工具")

    # 添加网址输入框
    url_label = tk.Label(window, text="网址:")
    url_label.pack()
    url_entry = tk.Entry(window, width=50)
    url_entry.pack()

    # 添加关键词输入框
    keywords_label = tk.Label(window, text="关键词(用逗号分隔):")
    keywords_label.pack()
    keywords_entry = tk.Entry(window, width=50)
    keywords_entry.pack()

    # 添加发布时间输入框
    date_label = tk.Label(window, text="发布时间(格式:YYYY-MM-DD):")
    date_label.pack()
    date_entry = tk.Entry(window, width=50)
    date_entry.pack()

    # 添加存放路径选择按钮
    def choose_dir():
      output_dir = filedialog.asksaveasfilename(defaultextension=".txt", filetypes=[("Text files", "*.txt")])
      output_dir_entry.delete(0, tk.END)
      output_dir_entry.insert(0, output_dir)

    output_dir_label = tk.Label(window, text="存放路径:")
    output_dir_label.pack()
    output_dir_entry = tk.Entry(window, width=50)
    output_dir_entry.pack()
    choose_dir_button = tk.Button(window, text="选择路径", command=choose_dir)
    choose_dir_button.pack()

    # 添加获取内容按钮
    def get_content():
      url = url_entry.get()
      keywords = keywords_entry.get().split(",")
      start_date_str = date_entry.get()
      output_dir = output_dir_entry.get()
      start_date = datetime.strptime(start_date_str, '%Y-%m-%d') if start_date_str else None
      get_web_content(url, keywords, start_date, output_dir)

    get_content_button = tk.Button(window, text="获取内容", command=get_content)
    get_content_button.pack()

    # 运行GUI程序
    window.mainloop()

if __name__ == "__main__":
    main()

一生挚爱不回头 发表于 2024-1-12 21:29

抓包就行了好像没看见网址

ericwise 发表于 2024-1-12 21:44

把这个代码接入到RPA工具中,可实现。

才不是弱受 发表于 2024-1-12 21:56

url呢,发出来看看

EchoAria 发表于 2024-1-13 00:28

可以用selenium嘛?或者直接抓取数据接口呢

挣扎的时候 发表于 2024-1-13 07:46

谢谢分享

assuller 发表于 2024-1-13 08:03

本帖最后由 assuller 于 2024-1-13 08:05 编辑

看你注释写的这么详细,就帮帮你吧!!
1.功能1点击页面的实现:首先你需要解析首页需要点进去的链接规律。如果有规律那就可以用for循环实现切换页面,如果没有规律那你可以使用解析页面链接的方式获取超链接,然后对获取的链接再次进行解析就实现了点击不同标题的功能。
2.功能2实现翻页的功能:原理基本和功能1差不多,翻页基本都是有规律的,可以通过for i in range(1,20)循环获取值,然后将获取值赋值到f'www.example.com/index/{num}.html'的链接中进行解析,就实现了翻页功能。
核心:功能1需要在功能2的循环下循环才能够实现翻页后再对页面进行解析
页: [1]
查看完整版本: 工作需要写了段爬取网页发布公告内容的代码,怎么才能让它拥有点击标题进入跟翻页