将之前的网页内容爬取后写入csv
时间: 2023-09-27 17:07:26 浏览: 77
自己开发的一个python网页爬虫,模拟网页操作,爬取的内容可直接保存为为csv格式
要将之前提取的网页内容写入CSV文件,你可以使用Python的csv模块来实现。以下是修改后的代码:
```python
import os
import re
import csv
from bs4 import BeautifulSoup
# 设置html文件路径
folder_path = r'C:\Users\test\Desktop\DIDItest'
output_file = r'C:\Users\test\Desktop\output.csv'
# 提取html文件内所需要数据
def extract_html_info(file_path, csv_writer):
with open(file_path, 'r', encoding='utf-8') as file:
# 读取HTML源代码
html = file.read()
soup = BeautifulSoup(html, 'html.parser')
# 提取所有的<p>标签
p_tags = soup.find_all('p')
for p_tag in p_tags:
# 提取ID
talk_id = p_tag.find_previous(string=lambda text: isinstance(text, str) and '[talkid:' in text)
talk_id = talk_id.strip('[talkid:]')
# 提取时间
timestamp = p_tag.find_previous('body').find_previous('head').find('meta', {'http-equiv': 'Content=-Type'})['content']
# 提取发送号码
send_number = p_tag.find('span', {'class': 'hint-success'}).text
# 提取接收号码
receive_number = p_tag.find_all('span', {'class': 'hint-success'})[1].text
# 提取信息内容
message = p_tag.previous_sibling.strip()
# 判断是否是音频
if '音频' in message:
file_url = p_tag.find('a')['href']
csv_writer.writerow([talk_id, timestamp, send_number, receive_number, file_url])
else:
csv_writer.writerow([talk_id, timestamp, send_number, receive_number, message])
# 创建CSV文件并写入数据
with open(output_file, 'w', newline='', encoding='utf-8') as file:
csv_writer = csv.writer(file)
csv_writer.writerow(['ID', '时间', '发送号码', '接收号码', '内容'])
# 遍历文件夹及子文件夹,提取HTML文件信息
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith('.html'):
file_path = os.path.join(root, file)
extract_html_info(file_path, csv_writer)
print("数据已成功写入CSV文件。")
```
在这个修改后的代码中,我添加了一个`output_file`变量来指定输出的CSV文件路径。然后,在`extract_html_info`函数中,我使用`csv_writer.writerow()`方法将提取的数据逐行写入CSV文件。
最后,在主程序中,我使用`open()`函数创建了CSV文件,并传递给`csv.writer()`方法创建了一个`csv_writer`对象。然后,我使用`csv_writer.writerow()`方法将表头和提取的数据写入CSV文件。
希望这次能够满足你的需求!如果你还有其他问题,请随时提问。
阅读全文