改写这段代码,增加两个功能:1.输出的文本中有不相关内容,去掉这部分文字。2.将结果输出为csv文件
时间: 2024-10-27 08:04:22 浏览: 14
高中语文苏教版必修5 《从百草园到三味书屋》修改稿品评 同步练习.doc
你可以通过修改现有代码来添加这两个功能。首先,需要引入pandas库来处理CSV格式的数据,同时可以使用正则表达式或字符串操作来过滤掉不相关的文本。以下是改写后的代码示例:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 函数用于提取并清洗数据
def extract_data(url):
response = requests.get(url)
response.encoding = 'utf-8'
soup = BeautifulSoup(response.text, 'html.parser')
cleaned_data = []
for left_list_box in soup.findAll('div', class_='left_list_box'):
if left_list_box:
title = left_list_box.find('a').get('title') if 'title' in left_list_box.find('a').attrs else ''
banquan = left_list_box.find('div', class_='banquan').findAll('span')[1].text if 'banquan' in left_list_box.find('div', class_='banquan') else ''
href = left_list_box.find('a')['href'] if 'href' in left_list_box.find('a') else ''
# 清洗无关内容(这里假设无关内容是特定关键词,例如"广告")
if "广告" not in banquan:
cleaned_data.append([title, banquan, href])
return cleaned_data
# 初始化结果列表
data = []
# 提取前两页数据
for i in range(0, 2):
url = "http://www.tanpaifang.com/tanjiaoyi/list_4_" + str(i) + ".html"
page_data = extract_data(url)
data.extend(page_data)
# 将数据转化为DataFrame并保存为CSV
df = pd.DataFrame(data, columns=['Title', 'Banquan', 'Link'])
df.to_csv('article_data.csv', index=False)
print("数据已成功保存至'article_data.csv'")
# 输出去除无关内容后的内容
for item in df.values:
print(f'Title: {item[0]}, Banquan: {item[1]}, Link: {item[2]}')
```
在这个版本中,我们创建了一个`extract_data`函数,先提取数据,然后检查版权信息是否含有"广告"这个关键词,如果包含就不将其加入结果。最后,我们将结果存储在`DataFrame`中,并以CSV文件的形式保存。
阅读全文