[英]Extract data from BSE website
如何使用 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")>]
使用 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
对象包含完整的页面源,包括动态添加的元素。 现在,您可以解析它以获取您提到的所有内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.