parse_page にアイテム タイトルのテキストと数値を表示するにはどうすればよいですか? href しか表示できません。
def parse_page(self, response):
self.log("\n\n\n Page for one device \n\n\n")
self.log('Hi, this is the parse_page page! %s' % response.url)
root = lxml.etree.fromstring(response.body)
for row in root.xpath('//row'):
allcells = row.xpath('./cell')
#... populate Items
for cells in allcells:
item = CiqdisItem()
item['title'] = cells.get(".//text()")
item['link'] = cells.get("href")
yield item
私のxmlファイル
<row>
<cell type="html">
<input type="checkbox" name="AF2C4452827CF0935B71FAD58652112D" value="AF2C4452827CF0935B71FAD58652112D" onclick="if(typeof(selectPkg)=='function')selectPkg(this);">
</cell>
<cell type="plain" style="width: 50px; white-space: nowrap;" visible="false">http://qvpweb01.ciq.labs.att.com:8080/dis/metriclog.jsp?PKG_GID=AF2C4452827CF0935B71FAD58652112D&view=list</cell>
<cell type="plain">6505550000</cell>
<cell type="plain">probe0</cell>
<cell type="href" style="width: 50px; white-space: nowrap;" href="metriclog.jsp?PKG_GID=AF2C4452827CF0935B71FAD58652112D&view=list">
UPTR
<input id="savePage_AF2C4452827CF0935B71FAD58652112D" type="hidden" value="AF2C4452827CF0935B71FAD58652112D">
</cell>
<cell type="href" href="/dis/packages.jsp?show=perdevice&device_gid=3651746C4173775343535452414567746D75643855673D3D53564A6151624D41716D534C68395A6337634E2F62413D3D&hwdid=probe0&mdn=6505550000&subscrbid=6505550000&triggerfilter=&maxlength=100&view=timeline&date=20100716T050314876" style="white-space: nowrap;">2010-07-16 05:03:14.876</cell>
<cell type="plain" style="width: 50px; white-space: nowrap;"></cell>
<cell type="plain" style="white-space: nowrap;"></cell>
<cell type="plain" style="white-space: nowrap;">2012-10-22 22:40:15.504</cell>
<cell type="plain" style="width: 70px; white-space: nowrap;">1 - SMS_PullRequest_CS</cell>
<cell type="href" style="width: 50px; white-space: nowrap;" href="/dis/profile_download?profileId=4294967295">4294967295</cell>
<cell type="plain" style="width: 50px; white-space: nowrap;">250</cell>
</row>
これが私の最新の編集です。両方の方法を表示しています。問題は、最初のメソッドが列 A のすべてのリンクを順番に解析しないことです。順序が正しくなく、列 A が null の場合、列 B から次のリンクを取得します。列 A のみを表示するにはどうすればよいですか? A is null それをスキップして、同じ列 A に移動しますか?
方法 2 parse_page。すべての行を反復しません。不完全な解析です。すべての行を取得するにはどうすればよいですか?
def parse_device_list(self, response):
self.log("\n\n\n List of devices \n\n\n")
self.log('Hi, this is the parse_device_list page! %s' % response.url)
root = lxml.etree.fromstring(response.body)
for row in root.xpath('//row'):
allcells = row.xpath('.//cell')
# first cell contain the link to follow
detail_page_link = allcells[0].get("href")
yield Request(urlparse.urljoin(response.url, detail_page_link ), callback=self.parse_page)
def parse_page(self, response):
self.log("\n\n\n Page for one device \n\n\n")
self.log('Hi, this is the parse_page page! %s' % response.url)
xxs = XmlXPathSelector(response)
for row in xxs.select('//row'):
for cell in row.select('.//cell'):
item = CiqdisItem()
item['title'] = cell.select("text()").extract()
item['link'] = cell.select("@href").extract()
yield item