一、spider爬虫
爬虫网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取服务器中数据的程序或者脚本。
爬虫的策略一般都遵循广度优先原则,一层一层数据的进行爬取,一般的网站深度不会太深,除非是重要的机密的那些网站。
二、基于python实现豆瓣爬取
如果能弄懂自己搭建的爬虫类,对于学习scrapy框架乃至自己搭建爬虫框架会有很大的帮助,毕竟再大的框架也离不开这些基本的原理,请先运行代码,对照注释和代码讲解进行学习。
A、可以直接运行的代码,爬取豆瓣,得到成就感之后我们回头看代码。
由于讲解原理会令人产生厌恶,所以先贴上代码让各位直接运行出结果,看到结果的成就感再回头学代码效率会高很多。
代码如下,运行即可爬取豆瓣网,并将爬取到的数据已.csv的保存
import ssl
import bs4
import re
import requests
import csv
import codecs
import time
from urllib import request, error
context = ssl._create_unverified_context()
class DouBanSpider:
def __init__(self):
#定义请求头 模拟浏览器访问豆瓣服务器
self.userAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
self.headers = {
"User-Agent": self.userAgent}
# 拿到豆瓣图书的分类标签
def getBookCategroies(self):
try:
#需要爬去的网站的url,这个网址是豆瓣的网址;
url = "https://book.douban.com/tag/?view=type&icn=index-sorttags-all"
#调用urlopen方法去访问豆瓣url,这时我们的脚本会模拟浏览器发送一个请求
response = request.urlopen(url, context=context)
#在豆瓣服务器接收到请求之后,会给我们一个response
content = response.read().decode("utf-8")
return content
except error.HTTPError as identifier:
print("errorCode: " + identifier.code + "errrorReason: " + identifier.reason)
return None
# 找到每个标签的内容
def getCategroiesContent(self):
content