Python脚本筛选网页中的敏感词

1.问题.

        response = requests.get(url)
        if response.status_code == 200:
            content = response.text

url输出内容conten中文t乱码;

原因:编码错误

解决:引入

# -*- coding: utf-8 -*-


response = requests.get(url)
response.encoding = 'utf-8'

2.re.search()函数:

在Python的re模块中,re.search()函数用于在字符串中搜索正则表达式的匹配项。如果找到匹配项,则返回一个匹配对象;如果没有找到,则返回None

当使用re.search()函数在字符串中搜索正则表达式模式时,如果找到匹配项,re.search()将返回一个Match对象。这个Match对象包含有关匹配的信息,例如匹配文本的位置和内容。

你可以通过几种方式从Match对象中获取匹配的内容:

  1. Match.group():返回匹配的文本。
  2. Match.start():返回匹配文本的开始位置(索引)。
  3. Match.end():返回匹配文本的结束位置(索引)。
  4. Match.span():返回一个元组(start, end),其中包含匹配文本的开始和结束位置。

输入excal表格,有一个url的列,代码从第4行开始

完整代码:

# -*- coding: UTF-8 -*-
import pandas as pd
import requests
import re

# 读取Excel文件
excel_path = 'keyfilter.xlsx'
df = pd.read_excel(excel_path, sheet_name='Sheet1', skiprows=2)  # 从第四行开始读取

# 关键词列表的正则表达式
keyword_patterns = [
    r'KP\S{1,20}计划',
    r'国家\S{1,20}计划',
    r'省级\S{1,20}计划',
    r'启明',
    r'火炬',
    r'讲席',
    r'千人',
    r'长江学者',
    r'海外引才计划',
    r'万人'
]

# 存储匹配的关键字和网址的列表
matched_data = []

# 遍历每个网址,检查是否包含关键词
for index, row in df.iterrows():
    url = row['网址']
    try:
        response = requests.get(url)
        response.encoding = 'utf-8'

        if response.status_code == 200:
            content = response.text
            # print(content)

            for pattern in keyword_patterns:
                # print(url)
                res = re.search(pattern, content)
                if res:
                    print(res.group())
                    matched_data.append({'网址': url, '关键词': res.group()})
                    # break  # 找到一个关键词就停止检查,避免重复
    except requests.exceptions.RequestException as e:
        print(f"请求 {url} 时发生错误: {e}")

# 将结果保存到新的Excel文件
matched_df = pd.DataFrame(matched_data)
# matched_df.to_excel('keyfilter_output.xlsx', index=False)
# 使用groupby对网址进行分组,然后使用agg函数合并关键词
merged_df = matched_df.groupby('网址')['关键词'].apply(lambda x: ', '.join(x)).reset_index()

# 将结果保存到新的Excel文件
merged_df.to_excel('keyfilter_output.xlsx', index=False)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_52541394

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值