网页内源代码模板如下: <html> <meta http-equiv="Content=-Type" content="text/html; charset=utf-8"> <head> <link href="http://192.167.1.101/hint.css" rel="stylesheet"></link> </head> <body>[talkid:138031370]2014年4月20日 03:55:45 , <span class="hint-success" data-hint"">111222</span> 向 <span class="hint-success" data-hint="">232323</span> 发送 我们已经是好友了,开始聊天吧! <p> ()</p> [talkid:138031371]2014年4月20日 04:45:45 , <span class="hint-success" data-hint"">111222</span> 向 <span class="hint-success" data-hint="">123456</span> 发送 音频 :[<ahref="files/f/f123fsasfsfsjdfrhf_n.m4a"]>音频</a> <p> ()</p> [talkid:138031372]2014年4月20日 04:55:45 , <span class="hint-success" data-hint"">111222</span> 向 <span class="hint-success" data-hint="">123456</span> 发送 图片 :[<ahref="files/f/f123fsasfsfsjdfrhf_n.jpg"]>图片</a> <p> ()</p> </body> </html> 利用python爬虫,打开C:/Users/test/Desktop/DIDItest文件夹下多个文件夹内的html文件源代码,并爬取源代码中的ID、时间、发送号码、接收号码、信息类型、发送内容,如果发送内容不为文本,则提取文件所在链接地址,并将爬取的内容写入csv中,爬取talkid、时间精确至年月日时分秒、发送号码提取第一个 data-hint""></span>之间的数字,接收号码提取第二个data-hint""></span>,信息类型就提取</span> 发送与:之间的文字,如果没有:则定义为文字
时间: 2023-08-14 10:58:35 浏览: 111
你可以使用Python的BeautifulSoup库来解析HTML源代码,并使用正则表达式来提取所需的信息。下面是一个示例代码,可以帮助你开始:
```python
import os
import csv
from bs4 import BeautifulSoup
import re
# 设置文件夹路径
folder_path = "C:/Users/test/Desktop/DIDItest"
# 创建CSV文件并写入标题行
csv_file = open("output.csv", "w", newline="")
csv_writer = csv.writer(csv_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)
# 读取HTML源代码
with open(file_path, "r", encoding="utf-8") as f:
html_source = f.read()
# 解析HTML
soup = BeautifulSoup(html_source, "html.parser")
# 获取talkid
talkid = re.findall(r"\[talkid:(\d+)\]", html_source)
# 获取时间
time = re.findall(r"(\d{4}年\d{1,2}月\d{1,2}日 \d{1,2}:\d{1,2}:\d{1,2})", html_source)
# 获取发送号码
send_number = re.findall(r"data-hint\"\">(\d+)<", html_source)[0]
# 获取接收号码
receive_number = re.findall(r"data-hint\"\">(\d+)<", html_source)[1]
# 获取信息类型
message_type = re.findall(r"</span> (.*?):", html_source)
if not message_type:
message_type = ["文字"]
# 获取发送内容
send_content = re.findall(r":(.*?)<", html_source)
if not send_content:
send_content = [""]
# 写入CSV文件
csv_writer.writerow([talkid[0], time[0], send_number, receive_number, message_type[0], send_content[0]])
# 关闭CSV文件
csv_file.close()
```
这段代码会遍历指定文件夹下的所有HTML文件,解析每个文件的源代码,并将所需的信息提取出来写入CSV文件。注意,这里使用了正则表达式来提取需要的内容,请确保正则表达式与HTML源代码的结构相匹配。
希望这可以帮助到你!如果有任何问题,请随时问我。
阅读全文