Python 3.x 删除嵌套数据并将其插入单个数组
我有以下HTML结构:Python 3.x 删除嵌套数据并将其插入单个数组,python-3.x,scrapy,Python 3.x,Scrapy,我有以下HTML结构: 第一 最后 第二 最后 新的 最新的 之所以如此,是因为您从“ul li”中提取html。然后您尝试运行“html”.css()。您必须删除为循环准备“list”变量的“.extract()”。像这样: from scrapy.selector import Selector with open('input.html') as fd: content = fd.read() response = Selector(text=content)
-
第一
最后
-
第二
最后
-
新的
最新的
之所以如此,是因为您从“ul li”中提取html。然后您尝试运行“html”.css()。您必须删除为循环准备“list”变量的“.extract()”。像这样:
from scrapy.selector import Selector
with open('input.html') as fd:
content = fd.read()
response = Selector(text=content)
data = {}
list = response.css('ul li')
for li in list:
key = li.css('div.LastDiv::text').extract_first()
if key not in data:
data[key] = []
data[key].append(li.css('div > h3::text').extract_first())
print(data)
这是因为你从ulli中提取html。然后您尝试运行“html”.css()。您必须删除为循环准备“list”变量的“.extract()”。像这样:
from scrapy.selector import Selector
with open('input.html') as fd:
content = fd.read()
response = Selector(text=content)
data = {}
list = response.css('ul li')
for li in list:
key = li.css('div.LastDiv::text').extract_first()
if key not in data:
data[key] = []
data[key].append(li.css('div > h3::text').extract_first())
print(data)
奥列格·T.的回答是不完整的
data
是一个字典,要求键实现SelectorList没有实现的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。这就是你犯这个错误的原因
正确的解决方案是:
#!/usr/bin/env python3
import collections
from scrapy.selector import Selector
with open('input.html') as fd:
content = fd.read()
response = Selector(text=content)
data = collections.defaultdict(list)
lst = response.css('ul li') #.extract()
for li in lst:
key = li.css('div.LastDiv::text')[0].extract()
data[key].append(li.css('div > h3::text')[0].extract())
print(dict(data))
其中input.html
是包含问题中html片段的文件。这将打印您要查找的内容:
{'TheLast': ['TheFirst', 'TheSecond'], 'TheLastNew': ['TheNew']}
奥列格·T.的回答是不完整的data
是一个字典,要求键实现SelectorList没有实现的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。这就是你犯这个错误的原因
正确的解决方案是:
#!/usr/bin/env python3
import collections
from scrapy.selector import Selector
with open('input.html') as fd:
content = fd.read()
response = Selector(text=content)
data = collections.defaultdict(list)
lst = response.css('ul li') #.extract()
for li in lst:
key = li.css('div.LastDiv::text')[0].extract()
data[key].append(li.css('div > h3::text')[0].extract())
print(dict(data))
其中input.html
是包含问题中html片段的文件。这将打印您要查找的内容:
{'TheLast': ['TheFirst', 'TheSecond'], 'TheLastNew': ['TheNew']}
错误是否发生在response.css
或li.css
行中?是否可以添加错误堆栈跟踪?您还可以粘贴列表的结果吗@MithunArunan结果是li
像这样的部分第一个 第二个 最后一个 新的 @meisterluk它出现在数据[li.css]的部分('div.LastDiv::text)].append(li.css('div>h3::text'))
我们需要更多信息。更新您的问题并包括类型和str()变量的表示法list
和li
。并修复示例代码。字符串未终止。错误是否发生在response.css
或li.css
的行中?是否可以添加错误堆栈跟踪?是否还可以粘贴list
@MithunArunan的结果?结果是li
部分它是这样的,第一个最后一个,第二个最后一个,第二个新的,它出现在数据[li.css('div.LastDiv::text)]的一部分。追加(li.css('div>h3::text'))
我们需要更多信息。请更新您的问题,包括变量的类型和str()表示形式列表和li
。并修复示例代码。字符串未终止。收到此错误回溯(最近一次调用):文件“”,第2行,在TypeError:Unhabable类型中:“SelectorList”
非常感谢您对meisterluk的回复。我只修复您提供给我的错误。如果我在我身边运行它并修复将来的问题会更好。我使用meisterluk的部分代码编辑了我的代码。得到此错误回溯(最近一次调用):文件“”,第2行,在TypeError:Unhabable类型中:“SelectorList”
非常感谢您对meisterluk的回复。我只修复了您提供给我的错误。如果我在我身边运行它并修复将来的问题,会更好。我使用meisterluk的部分代码编辑了我的代码。