为什么我写的for li in li_tags: text1=li.text # print("1",type(text1)) # print("2",type(text1.split('\n'))) data = { 'name':text1.split()} print(data) df = pd.DataFrame(data) print(df) writer = pd.ExcelWriter('测试.xlsx') df.to_excel(writer, index=False),df没有写入成功
时间: 2024-03-22 17:38:14 浏览: 75
可能是因为你每次循环都重新创建了一个新的 DataFrame,并且没有将新的数据添加到已有的 DataFrame 中。你可以将每次创建的 DataFrame 添加到一个列表中,最后再使用 pandas 的 concat() 方法将所有的 DataFrame 合并成一个,然后再写入 Excel 文件中。这是一个示例代码:
```
import pandas as pd
df_list = [] # 创建一个空列表,用于保存每次循环创建的 DataFrame
for li in li_tags:
text1 = li.text
data = {'name': text1.split()}
df = pd.DataFrame(data)
df_list.append(df) # 将新的 DataFrame 添加到列表中
# 将所有的 DataFrame 合并成一个
df_all = pd.concat(df_list, ignore_index=True)
# 将数据写入 Excel 文件中
writer = pd.ExcelWriter('测试.xlsx')
df_all.to_excel(writer, index=False)
writer.save()
```
你可以尝试运行这段代码,看是否能够成功将数据写入 Excel 文件中。
相关问题
import requests from bs4 import BeautifulSoup import re url = 'https://www.umei.net/tags/siwameitui/' domain = 'https://www.umei.net/' resp = requests.get(url) resp.encoding = 'utf-8' # print(resp.text) page = BeautifulSoup(resp.text, 'html.parser') list_li = page.findAll('li', attrs={"class": 'i_list list_n2'}) for i in list_li: list_page = BeautifulSoup(i, 'html.parser') break
你好!我是CSDN开发的ChitGPT,一个类ChatGPT的AI。你的第一个问题是关于如何使用Python抓取网页并解析HTML内容的代码。
下面是使用Python的requests库和BeautifulSoup库来实现这个功能的代码示例:
```python
import requests
from bs4 import BeautifulSoup
url = 'https://www.umei.net/tags/siwameitui/'
domain = 'https://www.umei.net/'
resp = requests.get(url)
resp.encoding = 'utf-8'
page = BeautifulSoup(resp.text, 'html.parser')
list_li = page.findAll('li', attrs={"class": 'i_list list_n2'})
for i in list_li:
list_page = BeautifulSoup(str(i), 'html.parser')
# 在这里可以对每个li元素进行处理,提取所需的信息
```
以上代码首先使用`requests.get()`方法发送GET请求获取网页内容,然后将其编码为UTF-8格式。接下来,使用BeautifulSoup的`BeautifulSoup()`方法将网页内容解析为HTML对象。然后,使用`findAll()`方法查找所有符合条件的li元素,并逐个处理。
请注意,在处理每个li元素之前,需要将其转换为字符串形式,以便能够使用BeautifulSoup解析。
希望这能帮到你!如果你有任何其他问题,请随时提问。
from bs4 import BeautifulSoup import pandas as pd import requests import time # df = pd.read_csv('playlist.csv', header=None,error_bad_lines=False, names=['url', 'title', 'play', 'user']) df = to_csv('playlist.csv', header=None, names=['url', 'title', 'play', 'user'], error_bad_lines=False) headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' } for i in df['url']: time.sleep(2) url = 'https://music.163.com' + i response = requests.get(url=url, headers=headers) html = response.text soup = BeautifulSoup(html, 'html.parser') # 获取歌单标题 title = soup.select('h2')[0].get_text().replace(',', ',') # 获取标签 tags = [] tags_message = soup.select('.u-tag i') for p in tags_message: tags.append(p.get_text()) # 对标签进行格式化 if len(tags) > 1: tag = '-'.join(tags) else: tag = tags[0] # 获取歌单介绍 if soup.select('#album-desc-more'): text = soup.select('#album-desc-more')[0].get_text().replace('\n', '').replace(',', ',') else: text = '无' # 获取歌单收藏量 collection = soup.select('#content-operation i')[1].get_text().replace('(', '').replace(')', '') # 歌单播放量 play = soup.select('.s-fc6')[0].get_text() # 歌单内歌曲数 songs = soup.select('#playlist-track-count')[0].get_text() # 歌单评论数 comments = soup.select('#cnt_comment_count')[0].get_text() # 输出歌单详情页信息 print(title, tag, text, collection, play, songs, comments) # 将详情页信息写入CSV文件中 with open('music_message.csv', 'a+', encoding='utf-8-sig') as f: f.write(title + ',' + tag + ',' + text + ',' + collection + ',' + play + ',' + songs + ',' + comments + '\n') # 获取歌单内歌曲名称 li = soup.select('.f-hide li a') for j in li: with open('music_name.csv', 'a+', encoding='utf-8-sig') as f: f.write(j.get_text() + '\n')出错 name 'to_csv' is not defined
这段代码中出错了,因为使用了一个不存在的函数 `to_csv()`。可能是打算使用 pandas 的 `pd.read_csv()` 函数读取 csv 文件的数据,但是出错了。应该改成 `pd.read_csv('playlist.csv', header=None, names=['url', 'title', 'play', 'user'], error_bad_lines=False)` 读取 csv 文件,而且应该把注释放到代码前面,避免影响代码的运行。
阅读全文