【问题标题】:lxml python script, how can I remove count of duplicate idlxml python脚本,如何删除重复ID的计数
【发布时间】:2016-06-21 17:43:43
【问题描述】:

好的,所以我被困在如何解决这个问题上。 这只是一个游戏的在线人的私人柜台。

经过一些研究,我设法深入了解我在搜索中添加了一些代码,以获取所有带有 on.png 的图像的计数......它确实有效!

from lxml import etree
import requests

def get_img_cnt(url):
   response = requests.get(url)
   parser = etree.HTMLParser()
   root = etree.fromstring(response.content, parser=parser)

   return int(root.xpath('count(//img[@src="pics/on.png"])'))

现在我的沮丧是“on.png”重复了两次,以防公会长在线。 任何人都可以想办法绕过它吗?这是 HTML 的一部分

<tr><td class='tabellatitolo a_dx' style=' padding:10px;' >Master
<td class='tabelladati' style=' padding:10px;' ><img align=absmiddle src='pics/on.png'> 
<a   href='?f=pg&id=55110'>Modernist</a>

<tr><td class='tabellatitolo a_dx' style=' padding:10px;' >Membri<p>(5)
<td class='tabelladati' style=' padding:10px;' >**<img align=absmiddle      src='pics/on.png'> 
<a href='?f=pg&id=55110'>**Modernist**</a>** - <br><img align=absmiddle src='pics/off.png'> 
<a href='?f=pg&id=232720'>Human Slayer</a> - <i>Ti stimo!</i><br>
<img align=absmiddle src='pics/off.png'> <a href='?f=pg&id=68194'>Juggernaut</a><br>
<img align=absmiddle src='pics/off.png'> <a href='?f=pg&id=67121'>XeDiOr ThE KoOl</a><br>
<img align=absmiddle src='pics/on.png'> <a href='?f=pg&id=142638'>Lisbet Irmgard</a><br>

我可能正在考虑使用上下文位置或利用“Membri”(成员)?

感谢任何提示 :)

【问题讨论】:

  • 是的,我会考虑使用“Membri”作为起点,然后从那里开始。看起来您提供的 html 是不完整的,所以很难说如何完全按照您的结构进行操作。

标签: python xml xpath lxml xml.etree


【解决方案1】:

我将给出一个更残酷但可能更简单的答案:

import re
import requests

def get_img_cnt(url):
    response = requests.get(url)

    # just take the bit after the 'Membri' section
    member_content = response.content.split('>Membri<')[1]

    # count the number of times you see the image
    return len(re.findall('pics/on.png', member_content))

效果如何取决于 html 的其余部分(您尚未提供)。在开始进行一般的 html 解析之前,我会进行字符串搜索(像这样)。如果可行,这是一个更简单、更快捷的解决方案。

【讨论】:

  • 很有趣,虽然似乎找不到列表 member_content = response.content.split('>Membriuodreams.it/?f=gilda&id=7005
  • 出于某种原因,我看到那个页面是英文的。我想你可以使用resp.text.split('&gt;Memb')[1],无论是英语还是意大利语,它都应该可以工作。
  • 虽然它给出了这个错误,但我理解这个概念,所以我需要做的是吐出XML,直到我到达“成员”,我会找到办法的!谢谢Traceback (most recent call last): File "2test.py", line 15, in &lt;module&gt; print "Gang:" , get_img_cnt(url) File "2test.py", line 8, in get_img_cnt member_content = response.content.split('&gt;Memb')[1] IndexError: list index out of range
猜你喜欢
  • 1970-01-01
  • 2020-09-02
  • 2017-02-02
  • 1970-01-01
  • 2018-06-24
  • 1970-01-01
  • 2022-10-23
  • 2020-09-01
  • 2018-03-17
相关资源
最近更新 更多