selenium爬虫

1.首先安装selenium:

pip install selenium

2.初步体验

  先用个小例子感受下:这里我们用 Chrome 浏览器来测试,方便查看效果,到真正爬取的时候换回 PhantomJS 即可。

# browser = webdriver.PhantomJS
    browser = webdriver.Chrome()
    url = 'https://www.zhihu.com/'
    browser.get(url)

3.浏览器驱动下载

默认下载到:“Python27/”目录下

4.实战

browser = webdriver.Chrome()
url = 'https://www.zhihu.com/'
browser.get(url)
# 点击登陆按钮,这里在浏览器中右键—>检查,在右边出现的代码中右键—>copy->Copy Xpath。就可以获取xpath
browser.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[2]/div[2]/span').click()
# 找到用户名输入框
obj = browser.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[2]/div[1]/form/div[1]/div[2]/div[1]/input')
obj.clear()
obj.send_keys('****')
obj = browser.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[2]/div[1]/form/div[2]/div/div[1]/input')
obj.clear()
obj.send_keys('****')
browser.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[2]/div[1]/form/button').click()
time.sleep(5)
# 截图并保存
browser.save_screenshot('zhihu.jpg')
time.sleep(20)
# 开头代表选择 id ,其后紧跟 id 的名称,以点(.)开头代表选择class,其后紧跟class的名称。标签名筛选,直接用标签名字即可

5.问题

一,NoSuchElementException:

原因:可能是网页还没加载出来

处理方法:

1. 延迟一段时间:time.sleep(3)  

2. WebDriverWait(browser, 60).until(browser.find_element(By.ID, '***'))

原因:需要一些交互式操作,如点击按钮等

原因:有些网站需要滚动才能显示剩下的内容:

处理方法:

js="document.documentElement.scrollTop=10000" #拖动滚动条到屏幕底端

driver.execute_script(js)
二、还有些比较坑的情况,就是你找到的按钮可能用click点击根本没用,并不是找错了,而可能是这个网页的框架引起的,还需要点击父元素,同样的也是要找到父元素后使用click方法。



猜你喜欢

转载自blog.csdn.net/dumb123/article/details/80372849