使用Python / Selenium抓取网页内容

时间:2019-06-23 18:04:47

标签: javascript python-3.x selenium web-scraping selenium-chromedriver

我正在尝试抓取table的内容。我相信表格是使用 JavaScript 呈现的,所以我使用的是selenium包和Python3。为此,我看到others找到了表xpath以便刮擦其内容,但是我不确定如何识别正确的xpath。

如何提取表格内容?如果使用xpath,如何通过检查网页的源代码来识别与表或其内容相对应的正确xpath?

from selenium import webdriver                                                                                                                                                                                                                                              
driver = webdriver.Chrome('path/to/chromedriver.exe')                                      
url = https://ultrasignup.com/results_event.aspx?did=6727
driver.get(url)

# Now I need to get the tables contents. I might do something like this:
table = driver.find_elements_by_xpath('my_xpath')
table_html = table.get_attribute('innerHTML') # not sure what innerHTML is...
df = read_html(table_html)[0]
print(df)
driver.close()     

2 个答案:

答案 0 :(得分:1)

我相信没有必要刮擦,因为它们具有API。

如果您访问此链接,您将在提供的表格中看到格式良好的数据:https://ultrasignup.com/service/events.svc/results/6727/json

某些代码:

import json, requests

url = 'https://ultrasignup.com/service/events.svc/results/6727/json'

response = requests.get(url)

# Get all people from the table
people = [x for x in response.json()] 

# Print first person's information
print(people[0]) 

希望有帮助!

答案 1 :(得分:0)

您可以通过检查表中的元素并查看源代码来标识正确的xpath。 在看到表内容中包含哪些标签之后,您必须逐步创建xpath。

例如:


<div class="test">
<p class="test2">
<table class="test3"> 
<!--May have more attributes-->
contents...
</table>
</p>
</div>

然后,您以// div [@ class =“ test”]开头xpath 现在您进入了div,

下一步: // div [@ class =“ test”] // p [@ class =“ test2”] 现在您进入了段落标记

最后一步:

xpath = "//div[@class='test']//p[@class='test2']//table[@class='test3']"

table = driver.find_elements_by_xpath('xpath')

现在您可以访问表并获取所需的任何属性,甚至表内容