使用BS4 python单击并刮取aspx页面

时间:2013-11-20 11:14:21

标签: javascript python asp.net web-scraping beautifulsoup

我试图通过点击按钮来抓取网站。我尝试使用firebug和谷歌Chrome控制台。我无法抓住它发送的请求,以避免点击按钮。当我点击以下网址中的搜索按钮时,我只看到两个.js文件作为请求

http://www.icsi.edu/Facilities/MembersDirectory.aspx

1 个答案:

答案 0 :(得分:3)

我认为最简单的方法是使用 Selenium的WebDriver

链接:http://www.seleniumhq.org/docs/03_webdriver.jsp#introducing-webdriver

如果你安装了 pip ,那就简单了

pip install selenium

应该有效。我建议使用Firefox作为浏览器。

您可以使用Selenium下载页面,然后使用BS4解析它。这是一个简单的脚本,它将“Foo”和“Bar”输入到表单中,然后单击“搜索”按钮。

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.icsi.edu/Member/MembersDirectory.aspx")
# Alternatively, link directly to the form:
# driver.get("https://www.icsi.in/student/Members/MemberSearch.aspx?SkinSrc=%5BG%5DSkins/IcsiTheme/IcsiIn-Bare&ContainerSrc=%5BG%5DContainers/IcsiTheme/NoContainer")

# Locate the elements.
first = driver.find_element_by_id("dnn_ctr410_MemberSearch_txtFirstName")
last = driver.find_element_by_id("dnn_ctr410_MemberSearch_txtLastName")
search = driver.find_element_by_id("dnn_ctr410_MemberSearch_btnSearch")

# Input the data and click submit.
first.send_keys("Foo")
last.send_keys("Bar")
search.click()

作为奖励,这里是如何遍历结果页面:

# next_page should be redeclared every time you visit a new page.
next_page = driver.find_element_by_class_name("rgPageNext")
next_page.click()