繁体   English   中英

带有请求和lxml的xpath报废,但是有问题

[英]Scraping with xpath with requests and lxml but having problems

使用xpath使用lxml抓取数据时,我一直遇到问题。 我想刮一下道琼斯工业平均价格,但是当我用python打印出来时,它说元素跨度为0x448d6c0。 我知道那一定是一块记忆,但是我只想要价格。 如何打印价格而不是价格在内存中的位置?

from lxml import html
import requests

page = requests.get('https://markets.businessinsider.com/index/realtime- 
chart/dow_jones')
content = html.fromstring(page.content)

#This will create a list of prices:
prices = content.xpath('//*[@id="site"]/div/div[3]/div/div[3]/div[2]/div/table/tbody/tr[1]/th[1]/div/div/div/span')

#This will create a list of volume:


print (prices)

正如您所说的,您将获得生成器,它们只是内存位置。 要访问它们,您需要在它们上调用一个函数,在这种情况下,您希望文本为.text

另外,我强烈建议更改您的XPath,因为它是字面上的位置,并且随时可能更改。

prices = content.xpath("//div[@id='site']//div[@class='price']//span[@class='push-data ']")
prices_holder = [i.text for i in prices]
prices_holder
 ['25,389.06',
 '25,374.60',
 '7,251.60',
 '2,813.60',
 '22,674.50',
 '12,738.80',
 '3,500.58',
 '1.1669',
 '111.7250',
 '1.3119',
 '1,219.58',
 '15.43',
 '6,162.55',
 '67.55']

还要注意,您只会在load处获得值。 如果您希望价格随价格变化而变化,则可能需要使用Selenium。

可变prices是包含Web元素的列表。 您需要调用text方法来提取值。

print(prices[0].text)

'25,396.03'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM