如何使用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")>]
答案 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
对象包含整页源,包括动态添加的元素。现在,您可以解析它以获得您提到的所有内容。