我是Z/OS、AS/400的Cobol,我正在努力学习新的编程语言,以便在家里做一些事情。所以我拿起Python开始尝试。你知道吗
但是现在我被一个我不明白为什么会发生的问题打动了,我已经在很多教程和其他关于字典的问题中做了很多研究,但是我仍然不知道我做错了什么,任何澄清都非常感谢。你知道吗
所以,我要做的是,我使用lxml进入服务器上的一个页面,从中返回一个文本列表,以及它们相应的链接,然后,我想创建一个包含两个结果(文本作为键,链接作为值)的字典,但事情并没有像我预期的那样进行。这是我的实际代码:
from lxml import html
import requests
page = requests.get('http://myexample.com.br/manga/')
tree = html.fromstring(page.text)
namelist = tree.xpath('//div[@class="manga_list"]/ul/li/a/text()')
linklist = tree.xpath('//div[@class="manga_list"]/ul/li/a/@href')
ind1 = 0
listall = {}
while ind1 < len(namelist):
print "Name", namelist[ind1]
print "Link", linklist[ind1]
listall[namelist[ind1]] = linklist[ind1]
print "Key", listall.keys()[ind1]
print "Index", ind1
ind1 += 1
正如你所见,我已经在循环中添加了一些打印行,这样我就可以在终端中看到目前正在使用的任何东西,这就是我得到的结果, 键会不断重复,因此它们不会被包括在内,但循环迭代中使用的当前名称和链接是正确的。。。所以我真的不明白这里发生了什么。。。你知道吗
Andres-MacBook-Pro:Documents Andre$ python teste.py
Name -6mm no Taboo
Link http://myexample.com.br/manga/6mm_no_taboo/
Key -6mm no Taboo
Index 0
Name -Rain-
Link http://myexample.com.br/manga/rain/
Key -6mm no Taboo
Index 1
Name -SINS-
Link http://myexample.com.br/manga/sins/
Key -6mm no Taboo
Index 2
Name :REverSAL
Link http://myexample.com.br/manga/reversal/
Key -6mm no Taboo
Index 3
Name ...Curtain
Link http://myexample.com.br/manga/curtain/
Key -6mm no Taboo
Index 4
Name ...Junai no Seinen
Link http://myexample.com.br/manga/junai_no_seinen/
Key ...Junai no Seinen
Index 5
Name ...no Onna
Link http://myexample.com.br/manga/no_onna/
Key ...Junai no Seinen
Index 6
Name ...Seishunchuu!
Link http://myexample.com.br/manga/seishunchuu/
Key ...Junai no Seinen
Index 7
Name ...Virgin Love.
Link http://myexample.com.br/manga/virgin_love/
Key ...Junai no Seinen
Index 8
Name .925 (NISHI Uko)
Link http://myexample.com.br/manga/925_nishi_uko/
Key ...Junai no Seinen
Index 9
Name .hack//4koma
Link http://myexample.com.br/manga/hack_4koma/
Key ...Junai no Seinen
Index 10
Name .hack//Alcor
Link http://myexample.com.br/manga/hack_alcor/
Key ...Junai no Seinen
Index 11
Name .hack//G.U.+
Link http://myexample.com.br/manga/hack_g_u/
Key ...Junai no Seinen
Index 12
Name .Hack//GnU
Link http://myexample.com.br/manga/hack_gnu/
Key ...Junai no Seinen
Index 13
Name .hack//Link
Link http://myexample.com.br/manga/hack_link/
Key ...Junai no Seinen
Index 14
Name .hack//Tasogare no Udewa Densetsu
Link http://myexample.com.br/manga/hack_tasogare_no_udewa_densetsu/
Key ...Junai no Seinen
Index 15
Name .hack//XXXX
Link http://myexample.com.br/manga/hack_xxxx/
Key ...Junai no Seinen
Index 16
Name .traeH
Link http://myexample.com.br/manga/traeh/
Key ...Junai no Seinen
Index 17
Name 'Hajimete' Ageru!
Link http://myexample.com.br/manga/hajimete_ageru/
Key ...Junai no Seinen
Index 18
Name "Aishiteru", Uso Dakedo.
Link http://myexample.com.br/manga/aishiteru_uso_dakedo/
Key ...Junai no Seinen
Index 19
Name "Aoi" - Hikaru ga Chikyuu ni Itakoro......
Link http://myexample.com.br/manga/aoi_hikaru_ga_chikyuu_ni_itakoro/
Key ...Junai no Seinen
Index 20
Name "Bungaku Shoujo" to Ue Kawaku Yuurei
Link http://myexample.com.br/manga/bungaku_shoujo_to_ue_kawaku_yuurei/
Key ...Virgin Love.
Index 21
字典没有顺序,因此您获取键的顺序(对于
dict.keys()
)调用可能与您期望的不同(似乎是这样)。如果您真的想检查字典中的所有内容,可以尝试打印完整的字典(或者可能是完整的dict.keys()
)。示例-或者
我也不是100%确定xpath是否总是以完全相同的顺序返回元素,但是我想说最好不要冒险。你可以像这样运行xpath-
然后对于上述xpath结果中的每个元素,运行两个xpath以获取文本和相应的href,例如-
如果您希望名称列表和链接列表在此之后,只需执行-
listall.keys()
(对于名称列表)和listall.values()
(对于值列表)。你知道吗如果要保持插入键的顺序,可以使用-^{} ,例如-
相关问题 更多 >
编程相关推荐