python - 使用 lxml 解析并使用 python 请求

标签 python html xml xpath lxml

最近我尝试使用lxmlrequests从网页解析html表。

Python代码运行如下:

>>> from lxml to html
>>> import requests
>>> page = requests.get('http://www.bigpaisa.com/candlestick-stock-screener-result/nse/bearish-evening-star-candlestick-pattern')
>>> tree = html.fromstring(page.text)'

然后我想使用lxml.xpath()函数解析以下重复数据 block 以获取列表:

<TR>
    <TD style="font-size: 11px;"><!-- <a href="/company-technical-details/<%=sr.getExchange()%>/<%=sr.getSymbol()%>/<%=sr.getName()%>" ><%= sr.getSymbol() %></a>  -->
                    AMTEKINDIA           </TD>
    <TD style="font-size: 11px; max-width: 135px;">AMTEK INDIA LIMITED</TD>
    <TD>                nse         </TD>
    <TD style="min-width: 60px; max-width: 60px;">02-01-2015</TD>
    <TD>78</TD>
    <TD>78.3</TD>
    <TD>72.25</TD>
    <TD>73.9</TD>

但无法这样做,会出现错误,例如:

>>> symbol=tree.xpath('//TD[@style="font-size: 11px;"][@!-- [@a href="/company-t
echnical-details/[@%=sr.getExchange()%]/[@%=sr.getSymbol()%]/[@%=sr.getName()%]"
 ][@%= sr.getSymbol() %][@/a]  --]/text()')

给出 Xpath 评估错误并且

>>> prices=tree.xpath('//TD/text()')

返回没有值的列表。

最佳答案

您感兴趣的行位于 <table> 内ID 为 sortable .

from lxml import html

url = 'http://www.bigpaisa.com/candlestick-stock-screener-result/nse/bearish-%20evening-star-candlestick-pattern'
doc = html.parse(url)

# you can use XPath to select elements...
rows = doc.xpath("//table[@id = 'sortable']/tbody/tr")

# or, if you prefer, use CSS selectors instead...
rows = doc.cssselect("table#sortable tbody tr")

for tr in rows:
    # do something with each tr, for example
    tds = tr.cssselect("td")
    print tds[4].text

请注意,您不需要 requests根本没有模块。

关于python - 使用 lxml 解析并使用 python 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27766651/

相关文章:

php - MYSQL数据库的问题

c# - 如何序列化列表?

python - 正则表达式前瞻和后瞻

python - 在 Python 中的 Else 之后使用 IF

python - 如何使Mapper以有序的方式从文件中获取数据

python - 类实例实现,初始化实例——来自SICP python

html - webkit - 中心链接文本

html - 在较小的设备上堆叠 Bootstrap 4 选项卡

python - 将 XML 导入 SQL 数据库

java xml注释获取带有命名空间的字段,<aaa :bbb>value</aaa:bbb>