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)为什么错
时间: 2024-02-15 13:28:21 浏览: 128
TI-TCA6424A.pdf
这段代码存在一些问题:
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 文件中了。
阅读全文