按钮后获取表单击BeautifulSoup Python

时间:2017-06-15 11:02:27

标签: python selenium beautifulsoup

我正试图从以下网站上刮一张桌子:

    http://www.boursakuwait.com.kw/Stock/StkHData.aspx?STK=103

这是使用

的以下代码
    ap = argparse.ArgumentParser()

    ap.add_argument("--id",required = True, help = "enter the id")
    ap.add_argument("--from",required = True, help = "From date")
    ap.add_argument("--to",required = True, help = "To date")

    args = vars(ap.parse_args())

    id_num = args["id"]
    from_date = args["from"]
    to_date = args["to"]

    browser = webdriver.Firefox()
    url1 = "http://www.boursakuwait.com.kw/Stock/StkHData.aspx?STK=" + id_num

    browser.get(url1)

    elem = browser.find_element_by_id("ContentMatter_txtFrom")
    elem.send_keys(from_date)
    elem = browser.find_element_by_id("ContentMatter_txtTo")
    elem.send_keys(to_date)
    elem = browser.find_element_by_id("ContentMatter_Button1").click()

    time.sleep(5)

    parsed = requests.get(url1)

    soup = BeautifulSoup(parsed.text,'html.parser')
    tble = soup.findAll("table",attrs={"class":"hoverTable"})

    print(tble)

输入from和迄今,并模拟按钮点击后,我的目标是获得结果表。但是,代码无法识别该表。我已经尝试了其他形式的代码以及(循环遍历行和列),但它们也没有用过。

我的猜测是网址没有更新,因为它是 hoverTable 。在这种情况下,有没有办法获得表格?

P.S:id_num是整数,101,102,103等显示公司的各自股票。粘贴的链接带有id 103. STK = 103

2 个答案:

答案 0 :(得分:2)

我能够通过使用浏览器对象来解决它。替换

    parsed = requests.get(url1)
    soup = BeautifulSoup(parsed.text,'html.parser')

    parsed = browser.page_source
    soup = BeautifulSoup(parsed,'html.parser')

因为浏览器对象从一开始就携带了url的状态而不是所使用的请求。

Murthy提出了一种更容易获得该表的方法

    tble = soup.select("table.hoverTable")

原始代码也适用。

答案 1 :(得分:1)

您尝试使用以下代码。

soup.select("table.hoverTable") //to select the table