从BSE网站

时间:2018-03-07 12:48:16

标签: python python-3.x selenium beautifulsoup python-requests

如何使用Python 3提取安全ID,安全代码,组/索引,Wtd.Avg价格,交易日期,交易数量,交付数量的交付数量百分比,并将其保存到XLS文件中。以下是链接。

https://www.bseindia.com/stock-share-price/smartlink-network-systems-ltd/smartlink/532419/

PS:我对python完全不熟悉。我知道有很少的库可以使报废变得更容易,比如BeautifulSoup,selenium,requests,lxml等。不要对它们有太多了解。

编辑1: 我试了一下

from bs4 import BeautifulSoup
import requests
URL = 'https://www.bseindia.com/stock-share-price/smartlink-network-systems-ltd/smartlink/532419/'
r = requests.get(URL)
soup = BeautifulSoup(r.content, 'html5lib')
table = soup.find('div', attrs = {'id':'newheaddivgrey'})
print(table)

其输出为None。我期待网页中的所有表格并进一步过滤以获取所需的数据。

import requests
import lxml.html
URL = 'https://www.bseindia.com/stock-share-price/smartlink-network-systems-ltd/smartlink/532419/'
r = requests.get(URL)
root = lxml.html.fromstring(r.content)
title = root.xpath('//*[@id="SecuritywiseDeliveryPosition"]/table/tbody/tr/td/table/tbody/tr[1]/td')
print(title)

尝试了另一个代码。同样的问题。

编辑2: 试过硒。但我没有得到表内容。

from selenium import webdriver
driver = webdriver.Chrome(r"C:\Program Files\JetBrains\PyCharm Community Edition 2017.3.3\bin\chromedriver.exe")
driver.get('https://www.bseindia.com/stock-share-price/smartlink-network-systems-ltd/smartlink/532419/')
table=driver.find_elements_by_xpath('//*[@id="SecuritywiseDeliveryPosition"]/table/tbody/tr/td/table/tbody/tr[1]/td')
 print(table)
driver.quit()

输出为[<selenium.webdriver.remote.webelement.WebElement (session="befdd4f01e6152942c9cfc7c563a6bf2", element="0.13124528538297953-1")>]

1 个答案:

答案 0 :(得分:1)

使用Selenium加载页面后,您可以使用driver.page_source获取Javascript修改的页面源代码。然后,您可以在BeautifulSoup对象中传递此页面源。

driver = webdriver.Chrome()
driver.get('https://www.bseindia.com/stock-share-price/smartlink-network-systems-ltd/smartlink/532419/')
html = driver.page_source
driver.quit()

soup = BeautifulSoup(html, 'lxml')
table = soup.find('div', id='SecuritywiseDeliveryPosition')

此代码将为您提供table变量中的 Securitywise Delivery Position 表。然后,您可以解析此BeautifulSoup对象以获取所需的不同值。

soup对象包含整页源,包括动态添加的元素。现在,您可以解析它以获得您提到的所有内容。