requests库
Requests 是 Python 的第三方库,它的安装非常简便,如下所示:
python -m pip install requests
Requests 库是在 urllib 的基础上开发而来,它使用 Python 语言编写,并且采用了 Apache2 Licensed(一种开源协议)的 HTTP 库。与 urllib 相比,Requests 更加方便、快捷,因此在编写爬虫程序时 Requests 库使用较多。
但是有时要爬取的网站是由ajax传输数据或者js动态渲染的时候,requests库就显得没那么好用了,获取源代码时经常为空。
下面就要介绍到今天的主角,selenium库
selenium库
一、什么是Selenium
selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。
selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。
二、selenium基本使用
用python写爬虫的时候,主要用的是selenium的Webdriver,我们可以通过下面的方式先看看Selenium.Webdriver支持哪些浏览器
执行结果如下,从结果中我们也可以看出基本山支持了常见的所有浏览器:
这里要说一下比较重要的PhantomJS,PhantomJS是一个而基于WebKit的服务端JavaScript API,支持Web而不需要浏览器支持,其快速、原生支持各种Web标准:Dom处理,CSS选择器,JSON等等。PhantomJS可以用用于页面自动化、网络监测、网页截屏,以及无界面测试。
其中最主要的使用方法就是通过
selenium
进行渲染之后获取渲染好的网页源码,就无须关心数据由本页面产生还是由接口产生。
三、selenium获取网页源代码
# 打开浏览器,请求一个带有动态内容的网页,等待js执行完毕(10秒钟足够),获取当前浏览器render的内容的源码,关闭浏览器
from selenium import webdriver
import time
browser = webdriver.Firefox()
browser.get('http://detail.tmall.com/item.htm?id=12577759834 ')
time.sleep(10)
pageSource = browser.page_source
print pageSource
browser.close()
实例(requests与selenium)
from selenium import webdriver
import time
import requests
from bs4 import BeautifulSoup
# # 传统获取网页源代码操作
# respone = requests.get("https://spa2.scrape.center/page/1")
# html = respone.text
# ====================================================
# 万能操作
browser = webdriver.Chrome()
browser.get("https://spa2.scrape.center/page/1")
# 等待10s,让网页所有js全部加载完全
time.sleep(10)
# 获取网页源代码
html = browser.page_source
soup = BeautifulSoup(html,'html.parser')
print(soup.find_all("h2",class_='m-b-sm'))
标签:浏览器,selenium,js,爬取,ajax,import,网页,requests,browser
From: https://www.cnblogs.com/java-six/p/16822622.html