Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用硒使桌子更漂亮_Python_Selenium_Xpath - Fatal编程技术网

Python 用硒使桌子更漂亮

Python 用硒使桌子更漂亮,python,selenium,xpath,Python,Selenium,Xpath,我有一个基本的python脚本,它可以删除一个网页来复制一个表和一个数字(两者都使用xpath),然后通过电子邮件发送信息 但是该表没有用户友好的格式,因为在scrapt过程中,它会丢失表行。有一种简单的方法可以让表格更漂亮,而不必一个数字一个数字地废弃,从头开始构建表格 即使我以html格式发送电子邮件,数据也是混合的。如果以文本形式发送,那么它是可读的(在底部检查),但无论如何,它不是非常用户友好的。谢谢 我的代码是: from pyvirtualdisplay import Display

我有一个基本的python脚本,它可以删除一个网页来复制一个表和一个数字(两者都使用xpath),然后通过电子邮件发送信息

但是该表没有用户友好的格式,因为在scrapt过程中,它会丢失表行。有一种简单的方法可以让表格更漂亮,而不必一个数字一个数字地废弃,从头开始构建表格

即使我以html格式发送电子邮件,数据也是混合的。如果以文本形式发送,那么它是可读的(在底部检查),但无论如何,它不是非常用户友好的。谢谢

我的代码是:

from pyvirtualdisplay import Display
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time

with Display():
    browser = webdriver.Firefox()

    try:
        url = 'https://pt.investing.com/commodities/brent-oil-historical-data'
        browser.get(url)
        time.sleep(5)
        brent_data = browser.find_element_by_xpath("//*[@id='results_box']").text
        #print (brent_data)
        last_price = browser.find_element_by_xpath("//*[@id='last_last']").text

    except NoSuchElementException:
        brent_data = "no data"
        last_price = "no data"
    finally:
        browser.quit()


import requests
from datetime import datetime, timedelta

today = datetime.now()
today = today.strftime('%d.%m.%Y')


text_send = """
========================================
%s

%s

========================================
""" % (last_price, brent_data)
输出为:

66,17

Data Último Abertura Alta Baixa Vol. Var. %
28.12.2017 66,17 65,97 66,33 65,97 - 0,38%
27.12.2017 65,92 66,20 66,38 65,48 - -1,64%
26.12.2017 67,02 65,20 67,10 65,00 74,25K 2,71%
22.12.2017 65,25 64,63 65,28 64,38 110,42K 0,54%
21.12.2017 64,90 64,49 64,93 64,20 155,42K 0,53%
20.12.2017 64,56 63,83 64,60 63,67 222,73K 1,19%
19.12.2017 63,80 63,41 63,91 63,30 213,19K 0,62%
18.12.2017 63,41 63,36 63,91 63,00 234,62K 0,28%
15.12.2017 63,23 63,39 63,68 63,08 213,00K -0,13%
14.12.2017 63,31 62,81 63,50 62,01 277,67K 1,39%
13.12.2017 62,44 63,80 64,32 62,36 354,37K -1,42%
12.12.2017 63,34 64,66 65,83 63,07 508,99K -2,09%
11.12.2017 64,69 63,29 64,93 62,99 488,01K 2,03%
08.12.2017 63,40 62,08 63,64 62,01 362,43K 1,93%
07.12.2017 62,20 61,30 62,26 61,15 238,96K 1,60%
06.12.2017 61,22 62,64 62,93 61,13 314,26K -2,61%
05.12.2017 62,86 62,45 63,15 62,12 219,34K 0,66%
04.12.2017 62,45 63,50 63,68 62,31 250,52K -2,01%
01.12.2017 63,73 62,74 64,32 62,59 308,15K 0,25%
30.11.2017 63,57 63,28 64,21 63,21 26,21K 0,73%
29.11.2017 63,11 63,30 64,07 62,50 178,20K -0,79%
28.11.2017 63,61 63,78 63,89 63,10 186,93K -0,36%
Alta: 67,10 Baixa: 61,13 Diferença: 5,97 Média: 63,83 Var. %: 3,65

假设允许您按照站点的条款和条件复制数据,您可能可以获得表本身。对“table”元素使用Xpath,然后使用

element.get_attribute('outerHTML')
然后将输出格式化为html

或者,他们的一个RSS提要可能适合您,然后使用python包获取该数据。(我自己没有用过,所以我不能推荐)