我正在尝试提取此邮件列表的每个标题,同时记录每个线程有多少回复。
根据 Firebug,<ul>
包含所有标题的 Xpath 是:
/html/body/table[2]/tbody/tr 1 /td[2]/table/tbody/tr/td/ul
但是,如果我将其直接粘贴到 Scrapy Shell 中,它将产生一个空列表:
scrapy shell http://seclists.org/fulldisclosure/2002/Jul/index.html
response.xpath('/html/body/table[2]/tbody/tr[1]/td[2]/table/tbody/tr/td/ul')
[]
经过一些试验和错误(因为我无法从文档中找出任何方法来列出给定选择器中的直接子元素(如果您知道,请告诉他们),我发现元素“tbody”在 Xpath 上不起作用。通过删除它们,我能够导航到/td
:
almost_email_threads = response.xpath('/html/body/table[2]/tr[1]/td[2]/table/tr/td')
但是,如果我现在尝试达到“ul”,它将不起作用:
email_threads.xpath('/ul')
[]
现在,最让我困惑的是运行:
response.xpath('/html/body/table[2]/tr[1]/td[2]/table/tr/td//ul')
会给我 ul,但与网站上出现的顺序不同。它以不同的顺序跳过线程。此外,似乎无法计算每个线程的回复量。
我在这里想念什么?自从我使用 Scrapy 已经有一段时间了,但我不记得有这么难弄清楚,而且无论出于何种原因,我的 Bing 或 Google 上的教程都没有。