0

次の情報を取得したい場合:

<td>But<200g/M2</td>


name = fila.select('.//td[2]/text()').extract()

私は以下をキャプチャします

"But"

どうやらこれらの文字「< /」と競合しているようです

4

2 に答える 2

0

'\'で特殊文字をエスケープするので、:

But\<200g\/M2

これらの文字を使用してファイルを作成するのはそれほど簡単ではないことに注意してください

于 2013-03-04T20:51:07.623 に答える
0

別のライブラリで運が良かった場合に備えて、BeautifulSoup を使用するアプローチを次に示します。

from bs4 import BeautifulSoup

soup = BeautifulSoup("""<html><head><title>StackOverflow-Question</title></head><body>
 <table>
  <tr>
   <td>Ifs</td>
   <td>Ands</td>
   <td>But<200g/M2</td>
  </tr>
 </table>
</body></html>""")

print soup.find_all('td')[2].get_text()

これの出力は次のとおりです。

But<200g/M2

XPath を使用したい場合は、ElementTree XML APIも使用できます。ここでは、BeautifulSoup を使用して HTML を有効な XML に変換し、それに対して XPath クエリを実行できるようにしています。

from bs4 import BeautifulSoup
import xml.etree.ElementTree as ET

html = """<html><head><title>StackOverflow-Question</title></head><body>
 <table>
  <tr>
   <td>Ifs / Ands / Or</td>
   <td>But<200g/M2</td>
  </tr>
 </table>
</body></html>"""

soup = BeautifulSoup(html)

root = ET.fromstring(soup.prettify())

print root.findall('.//td[2]')[0].text

これの出力は同じです (HTML が少し異なることに注意してください。これは、XPath 配列が 1 から始まるのに対し、Python 配列は 0 から始まるためです)。

于 2013-03-04T21:21:07.430 に答える