【发布时间】:2017-01-27 13:14:27
【问题描述】:
使用 selenium 抓取网站后,我无法打印内容。我需要刮一张桌子。这是我想要做的:
table = driver.find_element_by_xpath('//div[@class="line-chart"]/div/div[1]/div/div/table/tbody')
print table.text
但我只是得到一个空白行!
我知道我选择了正确的内容,因为当我保存一个 html 文件时它可以正常工作:
source_code = table.get_attribute("outerHTML")
f = open('html_source.html', 'w')
f.write(source_code.encode('utf-8'))
f.close()
我得到:
<tbody><tr><td>Jun 19</td><td>7</td></tr><tr><td>Jun 20</td><td>26</td></tr><tr><td>Jun 21</td><td>27</td></tr><tr><td>Jun 22</td><td>26</td></tr><tr><td>Jun 23</td><td>26</td></tr><tr><td>Jun 24</td><td>57</td></tr><tr><td>Jun 25</td><td>11</td></tr><tr><td>Jun 26</td><td>7</td></tr><tr><td>Jun 27</td><td>39</td></tr><tr><td>Jun 28</td><td>31</td></tr><tr><td>Jun 29</td><td>29</td></tr><tr><td>Jun 30</td><td>28</td></tr><tr><td>Jul 1</td><td>26</td></tr><tr><td>Jul 2</td><td>7</td></tr><tr><td>Jul 3</td><td>5</td></tr><tr><td>Jul 4</td><td>4</td></tr><tr><td>Jul 5</td><td>26</td></tr><tr><td>Jul 6</td><td>26</td></tr><tr><td>Jul 7</td><td>22</td></tr><tr><td>Jul 8</td><td>23</td></tr><tr><td>Jul 9</td><td>6</td></tr><tr><td>Jul 10</td><td>5</td></tr><tr><td>Jul 11</td><td>27</td></tr><tr><td>Jul 12</td><td>27</td></tr><tr><td>Jul 13</td><td>26</td></tr><tr><td>Jul 14</td><td>28</td></tr><tr><td>Jul 15</td><td>25</td></tr><tr><td>Jul 16</td><td>7</td></tr><tr><td>Jul 17</td><td>5</td></tr><tr><td>Jul 18</td><td>28</td></tr><tr><td>Jul 19</td><td>28</td></tr><tr><td>Jul 20</td><td>30</td></tr><tr><td>Jul 21</td><td>29</td></tr><tr><td>Jul 22</td><td>30</td></tr><tr><td>Jul 23</td><td>9</td></tr><tr><td>Jul 24</td><td>6</td></tr><tr><td>Jul 25</td><td>35</td></tr><tr><td>Jul 26</td><td>92</td></tr><tr><td>Jul 27</td><td>100</td></tr><tr><td>Jul 28</td><td>50</td></tr><tr><td>Jul 29</td><td>39</td></tr><tr><td>Jul 30</td><td>9</td></tr><tr><td>Jul 31</td><td>6</td></tr><tr><td>Aug 1</td><td>32</td></tr><tr><td>Aug 2</td><td>35</td></tr><tr><td>Aug 3</td><td>31</td></tr><tr><td>Aug 4</td><td>33</td></tr><tr><td>Aug 5</td><td>33</td></tr><tr><td>Aug 6</td><td>10</td></tr><tr><td>Aug 7</td><td>6</td></tr><tr><td>Aug 8</td><td>29</td></tr><tr><td>Aug 9</td><td>32</td></tr><tr><td>Aug 10</td><td>30</td></tr><tr><td>Aug 11</td><td>29</td></tr><tr><td>Aug 12</td><td>27</td></tr><tr><td>Aug 13</td><td>7</td></tr><tr><td>Aug 14</td><td>6</td></tr><tr><td>Aug 15</td><td>34</td></tr><tr><td>Aug 16</td><td>33</td></tr><tr><td>Aug 17</td><td>29</td></tr><tr><td>Aug 18</td><td>27</td></tr><tr><td>Aug 19</td><td>25</td></tr><tr><td>Aug 20</td><td>12</td></tr><tr><td>Aug 21</td><td>7</td></tr><tr><td>Aug 22</td><td>23</td></tr><tr><td>Aug 23</td><td>26</td></tr><tr><td>Aug 24</td><td>24</td></tr><tr><td>Aug 25</td><td>23</td></tr><tr><td>Aug 26</td><td>21</td></tr><tr><td>Aug 27</td><td>7</td></tr><tr><td>Aug 28</td><td>3</td></tr><tr><td>Aug 29</td><td>24</td></tr><tr><td>Aug 30</td><td>43</td></tr><tr><td>Aug 31</td><td>27</td></tr><tr><td>Sep 1</td><td>23</td></tr><tr><td>Sep 2</td><td>23</td></tr><tr><td>Sep 3</td><td>7</td></tr><tr><td>Sep 4</td><td>5</td></tr><tr><td>Sep 5</td><td>5</td></tr><tr><td>Sep 6</td><td>26</td></tr><tr><td>Sep 7</td><td>72</td></tr><tr><td>Sep 8</td><td>53</td></tr><tr><td>Sep 9</td><td>37</td></tr><tr><td>Sep 10</td><td>9</td></tr><tr><td>Sep 11</td><td>6</td></tr><tr><td>Sep 12</td><td>30</td></tr><tr><td>Sep 13</td><td>35</td></tr><tr><td>Sep 14</td><td>44</td></tr><tr><td>Sep 15</td><td>54</td></tr><tr><td>Sep 16</td><td>53</td></tr></tbody>
【问题讨论】:
-
尝试使用
table.get_attribute("textContent") -
行得通!非常感谢。为什么这行得通而不是 .text??
-
很难说,为什么 .text 在您的情况下不起作用,可能是它的设计问题..我提供了它作为答案,您也可以将其标记为正确。谢谢..:)
标签: python selenium web-scraping html-table