We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
之前的两篇我们讲解了Python内的urllib库的使用,不知道大家有没有在爬取一些动态网站的时候,发现自己用urllib爬取到的内容是不对的,无法抓取到自己想要的内容,比如淘宝的店铺宝贝等,它会用js动态的加载内容,此时selenium这个家伙就能派上用场了。
selenium是什么?简单的概括,它的初衷就是自动化测试工具。它支持各种浏览器,包括chrome,safari,firefox等主流界面式浏览器,如果你在这些浏览器里安装一个selenium的插件,那么便可以方便的实现Web界面的测试。换句话说selenium支持这些浏览器驱动,selenium支持多种语言开发,比如Python、Java、C、Ruby等等。
而在爬虫这个领域,我们则用这个自动化测试工具来模拟我们是真实的浏览器用户,用他来爬取页面非常方便,只要按照访问步骤模拟人在操作就可以了,完全不用操心cookie,session的处理,它甚至可以帮助你输入账户、密码,然后点击登录按钮,这些功能在应对一些常见的反爬虫机制时非常有用。
在我们开始示例代码之前,首先你要在Python中安装selenium库
pip install selenium
安装好了之后,我们便开始探索抓取方法了。
那么我们就把一个淘宝店铺为示例,试着来爬取他里面的宝贝列表。你可以先用urllib来验证一下这个url,是不是爬取不到浏览器显示的dom内容。
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'Lix' from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.by import By import time def selenium_example(): site_url = 'https://elcjstyle.taobao.com/search.htm?spm=a1z10.1-c-s.0.0.68616fccLXsimv&search=y' driver = webdriver.Chrome() driver.get(site_url) time.sleep(3) content = driver.page_source.encode('utf-8') print driver.title print content def main(): selenium_example() if __name__ == "__main__": main()
执行完这段示例代码之后,不出意外会打印出店铺名字和整张页面的html代码。可以把这个代码和Chrome内调试环境下看到的html代码比较一下,是否完全一样了。
而在selenium中,更是有很多不同的策略可以定位到一个元素,实现它本身的自动化测试目的,而我们也可以配合Beautiful Soup或者Xpath来提取我们想要的内容。
Beautiful Soup
Xpath
一次查找多个元素 (这些方法会返回一个list列表):
find_elements_by_name find_elements_by_xpath find_elements_by_link_text find_elements_by_partial_link_text find_elements_by_tag_name find_elements_by_class_name find_elements_by_css_selector
假如我们要通过name来查找一个元素:
页面元素如下所示:
<html> <body> <form id="loginForm"> <input name="username" type="text" /> <input name="password" type="password" /> <input name="continue" type="submit" value="Login" /> <input name="continue" type="button" value="Clear" /> </form> </body> <html>
name属性为 username & password 的元素可以像下面这样查找:
username = driver.find_element_by_name('username') password = driver.find_element_by_name('password')
通过这样的两句代码,我们就能提取到username和password的元素,所以selenium真的是一个很有用的工具呢。
关于selenium更多的用法,希望大家能认真阅读他的文档。这一定是一个会让你非常受用的工具的。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
之前的两篇我们讲解了Python内的urllib库的使用,不知道大家有没有在爬取一些动态网站的时候,发现自己用urllib爬取到的内容是不对的,无法抓取到自己想要的内容,比如淘宝的店铺宝贝等,它会用js动态的加载内容,此时selenium这个家伙就能派上用场了。
selenium是什么?简单的概括,它的初衷就是自动化测试工具。它支持各种浏览器,包括chrome,safari,firefox等主流界面式浏览器,如果你在这些浏览器里安装一个selenium的插件,那么便可以方便的实现Web界面的测试。换句话说selenium支持这些浏览器驱动,selenium支持多种语言开发,比如Python、Java、C、Ruby等等。
而在爬虫这个领域,我们则用这个自动化测试工具来模拟我们是真实的浏览器用户,用他来爬取页面非常方便,只要按照访问步骤模拟人在操作就可以了,完全不用操心cookie,session的处理,它甚至可以帮助你输入账户、密码,然后点击登录按钮,这些功能在应对一些常见的反爬虫机制时非常有用。
在我们开始示例代码之前,首先你要在Python中安装selenium库
安装好了之后,我们便开始探索抓取方法了。
那么我们就把一个淘宝店铺为示例,试着来爬取他里面的宝贝列表。你可以先用urllib来验证一下这个url,是不是爬取不到浏览器显示的dom内容。
执行完这段示例代码之后,不出意外会打印出店铺名字和整张页面的html代码。可以把这个代码和Chrome内调试环境下看到的html代码比较一下,是否完全一样了。
而在selenium中,更是有很多不同的策略可以定位到一个元素,实现它本身的自动化测试目的,而我们也可以配合
Beautiful Soup
或者Xpath
来提取我们想要的内容。一次查找多个元素 (这些方法会返回一个list列表):
假如我们要通过name来查找一个元素:
页面元素如下所示:
name属性为 username & password 的元素可以像下面这样查找:
通过这样的两句代码,我们就能提取到username和password的元素,所以selenium真的是一个很有用的工具呢。
关于selenium更多的用法,希望大家能认真阅读他的文档。这一定是一个会让你非常受用的工具的。
The text was updated successfully, but these errors were encountered: