gpt4 book ai didi

python - 使用 Python 抓取数据点

转载 作者:太空宇宙 更新时间:2023-11-04 06:07:25 25 4
gpt4 key购买 nike

我希望使用 Python 从 url http://www.cavirtex.com/orderbook 中抓取数据点.

我要抓取的数据点是最低出价,目前看起来是这样的:

<tr>
<td><b>Jan. 19, 2014, 2:37 a.m.</b></td>
<td><b>0.0775/0.1146</b></td>
<td><b>860.00000</b></td>
<td><b>66.65 CAD</b></td>
</tr>

相关点是 860.00 。我希望将其构建到一个脚本中,该脚本可以向我发送一封电子邮件,提醒我与其他交易所相比存在某些价格差异。

我是个菜鸟,所以如果您能在解释中提供您的思考过程,说明您为什么做了某些事情,我们将不胜感激。

这是我目前所拥有的,它会正确地返回标题的名称,但我在获取表格数据时遇到了问题。

import urllib2, sys
from bs4 import BeautifulSoup

site= "http://cavirtex.com/orderbook"
hdr = {'User-Agent': 'Mozilla/5.0'}
req = urllib2.Request(site,headers=hdr)
page = urllib2.urlopen(req)
soup = BeautifulSoup(page)
print soup.title

最佳答案

这是从“购买 BTC”表中抓取最低出价的代码:

from selenium import webdriver

fp = webdriver.FirefoxProfile()
browser = webdriver.Firefox(firefox_profile=fp)
browser.get('http://www.cavirtex.com/orderbook')

lowest_bid = float('inf')
elements = browser.find_elements_by_xpath('//div[@id="orderbook_buy"]/table/tbody/tr/td')

for element in elements:
text = element.get_attribute('innerHTML').strip('<b>|</b>')
try:
bid = float(text)
if lowest_bid > bid:
lowest_bid = bid
except:
pass

browser.quit()
print lowest_bid

为了在 Windows PC 上安装用于 Python 的 Selenium,从命令行运行:

pip install selenium(或者 pip install selenium --upgrade 如果您已经安装了它)。

如果您想要“卖出 BTC”表格,请将“orderbook_buy”更改为“orderbook_sell”。

如果您想要“最后交易”表,则将“orderbook_buy”更改为“orderbook_trades”。

注意:

如果您认为性能很重要,那么您可以通过 URL-Connection 而不是 Selenium 来实现数据抓取,并让您的程序运行得更快。但是,由于您不得不应用繁琐的 XML 解析,您的代码最终可能会变得更加“困惑”...

以下是将之前的输出通过电子邮件发送给自己的代码:

import smtplib,ssl

def SendMail(username,password,contents):
server = Connect(username)
try:
server.login(username,password)
server.sendmail(username,username,contents)
except smtplib.SMTPException,error:
Print(error)
Disconnect(server)

def Connect(username):
serverName = username[username.index("@")+1:username.index(".")]
while True:
try:
server = smtplib.SMTP(serverDict[serverName])
except smtplib.SMTPException,error:
Print(error)
continue
try:
server.ehlo()
if server.has_extn("starttls"):
server.starttls()
server.ehlo()
except (smtplib.SMTPException,ssl.SSLError),error:
Print(error)
Disconnect(server)
continue
break
return server

def Disconnect(server):
try:
server.quit()
except smtplib.SMTPException,error:
Print(error)

serverDict = {
"gmail" :"smtp.gmail.com",
"hotmail":"smtp.live.com",
"yahoo" :"smtp.mail.yahoo.com"
}

SendMail("your_username@your_provider.com","your_password",str(lowest_bid))

如果您的电子邮件提供商是 gmailhotmailyahoo,则上述代码应该有效。

请注意,根据您的防火墙配置,它可能会在您第一次尝试时征求您的许可...

关于python - 使用 Python 抓取数据点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21217034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com