vlambda博客
学习文章列表

【爬虫】网页爬虫快速入门

一、引言

    最近在网上搜索资料的时候,发现了很多丰富的资源,因此就写了一个爬虫来把资源都爬了下来。也刚好乘此机会把大家都写烂的爬虫再拿出来“炒一炒”。爬虫工具有非常多的都是使用Python语言编写,因此今天介绍的也都是关于Python写爬虫。


二、方式一:后台爬虫

    所谓后台爬虫,就是完全由脚本实现整个HTTP的请求交互,无需要借助浏览器,并能够获取页面的内容。使用Python进行开发大概需要用到httpliburlliburllib2requestbeautifulsoup等库。其中前面4个都是实现HTTP请求的库,使用urllib2实现请求百度页面的代码如下:

import urllib2
request = urllib2.Request("http://www.baidu.com/")response = urllib2.urlopen(request)content = response.read()

    实现页面请求的方法有很多,可以百度学习一下。当我们获取到页面的内容后,下一步就需要对其内容进行分析,以便找到想要的东西。beautifulsoup就是这样的一个分析HTML内容的强大工具库,官网上面有详细的介绍和接口使用说明。

官网文档

https://www.crummy.com/software/BeautifulSoup/bs4/doc

    简单获取页面中全部超链接的例子如下:

from bs4 import BeautifulSoup # <.....> # 接上面的代码,请求页面content = response.read()# 生成对象soup = BeautifulSoup(content)link_list = soup.find_all("a"# 获取内容里面的全部<a>元素

    通过上面的方式获取需要的资源连接或者网页内容还算比较方便,但如果有验证码,账号验证等措施的网站实现爬取内容还是稍微复杂一点。


三、方式二:浏览器自动化爬虫

    现在有很多页面是前端渲染的,页面容是通过js脚本动态生成的,方式一的爬虫就不适用了,可以使用Chrome+Selenium的自动化框架来解决。以下是简单的实现代码:

from selenium import webdriver
driver = webdriver.Chrome(r"chromedriver.exe")driver.get("https://search.bilibili.com/")input_search = driver.find_element_by_id("search-keyword")input_search.send_keys(u"马保国")input_search.submit() # 等于回车# 下面的代码就是点击搜索按钮,一般如果搜索框支持回车的话,用submit# driver.find_element_by_xpath("//a[@class='searchBtn']").click()

    通过上面的就可以在B站搜索混元太极门掌门人啦。此方法会打开浏览器进行页面访问操作,与正常访问网站是一致的行为。快速搭建自动化开发环境只需要3步骤:

    1. 安装Python,并安装selenium库。

    2. 下载chromedriver,去官方网站选择自己谷歌浏览器的本(下图1)。可以在浏览器输入chrome://version查看自己的版本号(下图2)。

chromedriver官网下载页面

http://chromedriver.storage.googleapis.com/index.html

    3. 编写脚本,简单的脚本就是上面写的,如果需要使用cookies中的信息,而不是每次都启动干净的环境,可以加上下面的代码。

option = webdriver.ChromeOptions()# 设置用户数据数据目录,这个目录可以用你Google浏览器的用户缓存目录# 也可以用一个新的目录。第一次登录账号后,后面都会记录
option.add_argument('--user-data-dir=temp/Data')# 创建driver,带上参数driver = webdriver.Chrome("chromedriver.exe"0, option) 

    以上就是简单的介绍一下两种爬虫方式,具体的实现方法网上资料还是比较全的,就不多做介绍了。另外我上面的例子用的是Python2.7,如果是Python3+的版本就需要稍微调整一下。