小编blt*_*yro的帖子

为什么这个xpath在python中使用lxml失败?

这是我试图从中获取数据的示例网页. http://www.makospearguns.com/product-p/mcffgb.htm

xpath取自chrome开发工具,firefox中的firepath也能找到它,但是使用lxml它只返回'text'的空列表.

from lxml import html
import requests

site_url = 'http://www.makospearguns.com/product-p/mcffgb.htm'
xpath = '//*[@id="v65-product-parent"]/tbody/tr[2]/td[2]/table[1]/tbody/tr/td/table/tbody/tr[2]/td[2]/table/tbody/tr[1]/td[1]/div/table/tbody/tr/td/font/div/b/span/text()'

page = requests.get(site_url)
tree = html.fromstring(page.text) 
text = tree.xpath(xpath)
Run Code Online (Sandbox Code Playgroud)

用.打印出树文本

print(tree.text_content().encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)

显示数据存在,但似乎xpath无法找到它.有什么我想念的吗?我尝试过的大多数其他网站使用lxml和从chrome dev工具中获取的xpath都可以正常工作,但是我找到了一些空列表.

python xml xpath lxml

6
推荐指数
1
解决办法
4877
查看次数

如何将timedelta与pandas df.query()一起使用?

我希望能够从用户或文件中传入文本来过滤熊猫,这似乎查询是处理它的最佳方式。但是,我有一个日期时间索引,似乎无法找到使用 timedeltas 的方法。我知道我可以用 > 或 < 来过滤日期

query_string = 'index < datetime.datetime(2020, 2, 20, 11, 8, 19, 615268)'
df.query(queryString)

Run Code Online (Sandbox Code Playgroud)

date = datetime.datetime.now()
query_string = 'index < @date'
df.query(queryString)
Run Code Online (Sandbox Code Playgroud)

我想要做的是获取相对日期范围,例如获取条目的最后 10 秒

date = datetime.now()
query_string = 'index > @date - datetime.timedelta(seconds=10)'
df.query(query_string)
Run Code Online (Sandbox Code Playgroud)

这失败了,我似乎无法找到一种方法来执行诸如过滤与时间戳相关的任何内容之类的操作。有没有其他方法可以格式化它,以便我可以使用 df.query() 从日期中添加/减去时间?

python datetime timedelta dataframe pandas

5
推荐指数
1
解决办法
491
查看次数

标签 统计

python ×2

dataframe ×1

datetime ×1

lxml ×1

pandas ×1

timedelta ×1

xml ×1

xpath ×1