将新闻列表页面的源代码复制下来,并保存为origin.txt。pyton读入这个origin.txt文件,通过正则表达式获取用户、新闻标题和发布时间,并保存为info.csv文件。
时间: 2024-09-19 14:14:21 浏览: 136
首先,你需要使用Python的文件操作和正则表达式库`re`来完成这个任务。以下是一个简单的步骤说明:
1. 打开一个Python脚本,例如`fetch_news.py`:
```python
import re
# 打开并读取origin.txt文件
with open('origin.txt', 'r') as file:
content = file.read()
# 定义正则表达式模式来匹配用户、新闻标题和发布时间
pattern = r'(用户名): (.*) \((时间)\)'
# 使用正则表达式查找所有匹配项
matches = re.findall(pattern, content)
# 将匹配结果保存到info.csv文件,每行包含一个用户、标题和时间
with open('info.csv', 'w', newline='') as csv_file:
writer = csv.writer(csv_file)
writer.writerow(['用户', '标题', '时间']) # 写入表头
for user, title, time in matches:
writer.writerow([user, title, time])
print("数据已成功保存到info.csv文件。")
#
相关问题
将新闻列表页面的源代码复制下来,并保存为origin.txt。pyton读入这个origin.txt文件,通过正则表达式获取用户、新闻标题和发布时间,并保存为info.csv文件。
首先,你需要安装Python的`requests`库来抓取网页内容,以及`BeautifulSoup`库用于解析HTML。如果你还没有安装,可以使用pip安装:
```bash
pip install requests beautifulsoup4
```
然后,编写一个Python脚本来完成这个任务:
```python
import requests
from bs4 import BeautifulSoup
import csv
# 定义需要保存信息的CSV文件名
output_file = "info.csv"
# 模拟请求新闻列表页,这里假设是一个URL
url = "http://example.com/news-list" # 请替换为实际的新闻列表页URL
# 发送GET请求
response = requests.get(url)
# 检查请求是否成功
if response.status_code == 200:
# 解析HTML内容
soup = BeautifulSoup(response.text, 'html.parser')
# 使用正则表达式提取用户、新闻标题和发布时间的模式(这取决于具体的HTML结构)
user_pattern = r'<span class="user">(\w+)</span>' # 示例,根据实际情况修改
title_pattern = r'<h2>(.*?)</h2>' # 示例,根据实际情况修改
date_pattern = r'date:(\d{4}-\d{2}-\d{2})' # 示例,根据实际情况修改
# 提取数据
data = []
for item in soup.find_all('div', class_='news-item'): # 假设每个新闻在div元素内
user = soup.find(text=user_pattern, parent=item).group(1)
title = soup.find(text=title_pattern, parent=item).strip()
date = soup.find(text=date_pattern, parent=item).group(1)
data.append([user, title, date])
# 保存到CSV文件
with open(output_file, 'w', newline='', encoding='utf-8') as csvfile:
fieldnames = ['User', 'Title', 'Publish Date']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(data)
print(f"数据已成功保存到 {output_file}")
else:
print(f"请求失败,状态码:{response.status_code}")
pyton 获取目录下的所有txt 随机合并成 a.txt 和b.txt 要求2个txt 行数一样
您好,根据您的要求,可以使用以下 Python 代码来实现:
```python
import os
import random
# 获取目录下所有 txt 文件
txt_files = [f for f in os.listdir('.') if f.endswith('.txt')]
# 读取每个 txt 文件,并将所有行保存在列表中
lines = []
for file in txt_files:
with open(file, 'r') as f:
lines.append(f.readlines())
# 获取每个 txt 文件的行数
num_lines = len(lines[0])
# 随机合并成 a.txt 和 b.txt
random.shuffle(lines)
a_lines = lines[:len(lines)//2]
b_lines = lines[len(lines)//2:]
a_file = open('a.txt', 'w')
b_file = open('b.txt', 'w')
# 将 a.txt 和 b.txt 中每个文件的行数限制为 num_lines
for i in range(num_lines):
a = a_lines[random.randrange(len(a_lines))][i]
b = b_lines[random.randrange(len(b_lines))][i]
a_file.write(a)
b_file.write(b)
a_file.close()
b_file.close()
```
以上代码首先使用 Python 内置的 `os` 模块获取当前目录下所有 `.txt` 结尾的文件,然后循环读取每个文件的内容并将每行内容保存在一个列表中。接着,获取每个文档的行数,并使用 `random.shuffle` 函数将所有行随机打乱。最后,将列表的前一半作为 a.txt 文件的内容,后一半作为 b.txt 文件的内容。同时使用 `random.randrange` 函数随机从每个文件中选择相应的行来保证两个文件的行数数量一致。
阅读全文
相关推荐














