当我想要捕获以下信息时:
<td>But<200g/M2</td>
name = fila.select('.//td[2]/text()').extract()
我捕捉到以下内容
"But"
显然与这些字符“&lt; /”
存在冲突答案 0 :(得分:0)
使用'\'转义特殊字符,所以:
But\<200g\/M2
请注意,使用这些字符创建文件并不容易
答案 1 :(得分: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,您还可以使用The 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开始)。