dit['面积'] = houseInfo[1].strip('平米') 什么意思
时间: 2023-10-31 08:05:40 浏览: 140
这段代码是将字符串变量 `houseInfo[1]` 中的 `"平米"` 字符串去除,并将剩余部分转换为浮点数类型后,赋值给字典 `dit` 中的键 `'面积'`。假设 `houseInfo[1]` 的值为 `'120平米'`,执行完这段代码后,`dit` 中的键值对为 `{'面积': 120.0}`。
相关问题
for i in range(1,123): if i == 1: url = 'https://www.4399.com/flash_fl/5_1.htm' html = requests.get(url,headers=headers).content doc = etree.HTML(html) name = doc.xpath('//*[@class="list affix cf"]/li/a/text()') url_1 = doc.xpath('//*[@class="list affix cf"]/li/a/@href') data_list = [] for wu_y_s in url_1: new_url = 'https://www.4399.com' +wu_y_s for i in range(len(name)): dit = {} dit['游戏名称'] = name[i] dit['游戏地址'] = new_url[i] data_list.append(dit) csv_writer.writerow(dit) else: url = 'https://www.4399.com/flash_fl/more_5_{}.htm'.format(str(i)) html = requests.get(url,headers=headers).content doc = etree.HTML(html) name = doc.xpath('//*[@class="list affix cf"]/li/a/text()') url_1 = doc.xpath('//*[@class="list affix cf"]/li/a/@href') data_list = [] for wu_y_s in url_1: new_url = 'https://www.4399.com' +wu_y_s for i in range(len(name)): dit = {} dit['游戏名称'] = name[i] dit['游戏地址'] = new_url[i] data_list.append(dit) csv_writer.writerow(dit) print(data_list)怎么改
根据你的代码,你想爬取4399游戏网站的游戏名称和链接,并将其保存到CSV文件中。但是,你的代码有一些问题,其中最主要的问题在于每次循环都会覆盖之前爬取到的数据,最终只会保存最后一页数据。
为了解决这个问题,你需要将data_list定义在循环外部,这样在每次循环中都会将新爬取到的数据添加到data_list中。另外,还需要修改CSV文件的写入方式,应该在循环结束后再次打开CSV文件并写入所有数据。
下面是修改后的代码示例:
```
import requests
import csv
from lxml import etree
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
data_list = [] # 定义空列表,用于保存所有数据
for i in range(1, 123):
if i == 1:
url = 'https://www.4399.com/flash_fl/5_1.htm'
else:
url = 'https://www.4399.com/flash_fl/more_5_{}.htm'.format(str(i))
html = requests.get(url, headers=headers).content
doc = etree.HTML(html)
name = doc.xpath('//*[@class="list affix cf"]/li/a/text()')
url_1 = doc.xpath('//*[@class="list affix cf"]/li/a/@href')
for wu_y_s in url_1:
new_url = 'https://www.4399.com' + wu_y_s
for i in range(len(name)):
dit = {}
dit['游戏名称'] = name[i]
dit['游戏地址'] = new_url
data_list.append(dit)
# 将数据写入CSV文件
with open('4399_games.csv', 'w', newline='', encoding='utf-8') as f:
fieldnames = ['游戏名称', '游戏地址']
csv_writer = csv.DictWriter(f, fieldnames=fieldnames)
csv_writer.writeheader()
csv_writer.writerows(data_list)
print(data_list)
```
在上面的代码中,首先定义了一个空列表data_list,然后在每次循环中将新爬取到的数据添加到data_list中。在所有循环结束后,再次打开CSV文件并写入所有数据。最终,data_list中保存了所有游戏名称和链接的字典数据,并且已经成功写入到CSV文件中。
for i in range(1,123): if i == 1: url = 'https://www.4399.com/flash_fl/5_1.htm' html = requests.get(url =url,headers=headers).content doc = etree.HTML(html) name = doc.xpath('//*[@class="list affix cf"]/li/a/text()') url_1 = doc.xpath('//*[@class="list affix cf"]/li/a/@href') data_list = [] for wu_y_s in url_1: new_url = 'https://www.4399.com' +wu_y_s for i in range(len(name)): dit = {} dit['游戏名称'] = name[i] dit['游戏地址'] = new_url[i] data_list.append(dit) csv_writer.writerow(dit)为什么错
这段代码存在一些问题:
1. 缺少导入 requests 和 etree 库的语句。
2. 缺少定义 headers 变量的语句。
3. 缺少定义 csv_writer 变量的语句。
4. 在 for 循环中,new_url 是一个字符串,无法像列表一样进行索引。
你需要先导入需要的库,然后定义 headers 和 csv_writer 变量,并在 for 循环中将 new_url 改为列表形式,如下所示:
```
import requests
from lxml import etree
import csv
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
url = 'https://www.4399.com/flash_fl/5_1.htm'
html = requests.get(url=url, headers=headers).content
doc = etree.HTML(html)
name = doc.xpath('//*[@class="list affix cf"]/li/a/text()')
url_1 = doc.xpath('//*[@class="list affix cf"]/li/a/@href')
with open('game.csv', 'w', newline='', encoding='utf-8') as csvfile:
fieldnames = ['游戏名称', '游戏地址']
csv_writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
csv_writer.writeheader()
data_list = []
for i in range(len(url_1)):
new_url = 'https://www.4399.com' + url_1[i]
dit = {}
dit['游戏名称'] = name[i]
dit['游戏地址'] = new_url
data_list.append(dit)
csv_writer.writerow(dit)
```
这样就可以正确地将游戏名称和游戏地址保存到 csv 文件中了。
阅读全文