我正试图从以下网站上刮一张桌子:
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
答案 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