我试图通过单击一个按钮来抓取网站.我尝试使用萤火虫和谷歌浏览器控制台.我无法捕获正在发送的请求,以避免单击按钮.单击以下URL中的搜索按钮时,我仅看到两个.js文件作为请求
http://www.icsi.edu/Facilities/MembersDirectory.aspx
解决方法:
我认为处理此问题的最简单方法是使用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()