如何使用xpath从Python3的html中解析控制器部分

2024-09-28 22:32:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我打算用python3xpath从下面的html(这只是我的html的一个部分示例,整个html,请访问http://movie.walkerplus.com/list/2015/12/)中提取导演的名字(比如tom)。 请帮我解决这个问题。 提前谢谢!你知道吗

  <title> ufffff</title>
  <div class="hiragana">2015<br>Dec 1st</br></div>
  <div class="movies">
  <div class="movie">
  <h3><a href="/mv57512/">007</a></h3>
  <dl class="directorList">
  <dt>director</dt>
  <dd>
  <a href="/person/152394/" title="">bruce</a>
  </dd>
  </dl>
  </div>
  </div>
  <div class="movies">
  <div class="movie">
  <h3><a href="/mv57512/">wind love</a></h3>
  <dl class="directorList">
  <dt>director</dt>
   <dd>
   <a href="/person/152394/" title="">tom</a>
   </dd>
   </dl>
   <div class="movies">
   <div class="movie">
   <h3><a href="/mv57512/">river war</a></h3>
   <dl class="directorList">
   <dt>director</dt>
   <dd>
   <a href="/person/152394/" title="">July</a>
   </dd>
   </dl>
   </div>
   </div>
   <div class="mwb">
   <div class="hiraganaLocalNavi">
   <ul class="page_12">
   <li class="text">o</li>
   <li><a class="m01" href="/list/2015/01/">1月</a></li>
   <li><a class="m02" href="/list/2015/02/">2月</a></li>
   <li><a class="m03" href="/list/2015/03/">3月</a></li>
   <li><a class="m04" href="/list/2015/04/">4月</a></li>
   <li><a class="m05" href="/list/2015/05/">5月</a></li>
   <li><a class="m06" href="/list/2015/06/">6月</a></li>
   <li><a class="m07" href="/list/2015/07/">7月</a></li>
   <li><a class="m08" href="/list/2015/08/">8月</a></li>
   <li><a class="m09" href="/list/2015/09/">9月</a></li>
   <li><a class="m10" href="/list/2015/10/">10月</a></li>
   <li><a class="m11" href="/list/2015/11/">11月</a></li>
   <li><a class="m12" href="/list/2015/12/">12月</a></li>
   </ul>
    </div>
    </div>
..................

Tags: divtitlehtmldtlimoviesmovieh3
2条回答

阅读alecxe提供的链接。你有这个问题。你知道吗

  1. 原始字符串中的空格在 示例html
  2. 引号是特殊字符,需要转义 或替换为“.”
  3. 您需要为多行设置re.M标志 默认情况下,字符串“.”与换行符不匹配

Regex和HTML是注定要疯狂的匹配。你知道吗

明确地用lxml来代替。像这样:

from lxml import etree
f = StringIO(your_html_text)
tree = etree.parse(f)
what_you_are_looking_for = tree.xpath('//*[contains(concat(' ', @class, ' '), ' movies')]')

这是一种非常健壮的获取所需数据的方法,它比正则表达式更能忍受混乱的生活(html中缺少标记、数据四处移动等)。你知道吗

您可以阅读更多关于它的信息here。干杯!你知道吗

相关问题 更多 >