. 抓取网页
搜索引擎使用通用爬虫来抓取网页,其基本工作流程与其他爬虫类似,大致步骤如下:
(1)首先选取一部分的种子URL,将这些URL放入待抓取URL队列;
(2)取出待抓取URL,解析DNS得到主机的IP,并将URL对应的网页下载下来,存储进已下载网页库中,并且将这些URL放进已抓取URL队列。
搜索引擎使用通用爬虫来抓取网页,其基本工作流程与其他爬虫类似,大致步骤如下:
(1)首先选取一部分的种子URL,将这些URL放入待抓取URL队列;
(2)取出待抓取URL,解析DNS得到主机的IP,并将URL对应的网页下载下来,存储进已下载网页库中,并且将这些URL放进已抓取URL队列。
PS : 搜索引擎如何获取一个新网站的URL:
新网站向搜索引擎主动提交网址:(如百度http://zhanzhang.baidu.com/linksubmit/url)
在其他网站上设置新网站外链(尽可能处于搜索引擎爬虫爬取范围)
搜索引擎和DNS解析服务商(如DNSPod等)合作,新网站域名将被迅速抓取。
新网站向搜索引擎主动提交网址:(如百度http://zhanzhang.baidu.com/linksubmit/url)
在其他网站上设置新网站外链(尽可能处于搜索引擎爬虫爬取范围)
搜索引擎和DNS解析服务商(如DNSPod等)合作,新网站域名将被迅速抓取。
Robots协议(也叫爬虫协议、机器人协议等),全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,例如:
淘宝网:https://www.taobao.com/robots.txt
腾讯网: http://www.qq.com/robots.txt
淘宝网:https://www.taobao.com/robots.txt
腾讯网: http://www.qq.com/robots.txt
used = set() # 设置一个集合,保存已经抓取过的URL
storage = {}
while len(queue) > 0 and count > 0 :
try:
url = queue.pop(0)
html = requests.get(url).text
storage[url] = html #将已经抓取过的URL存入used集合中
used.add(url)
new_urls = r.findall(html) # 将新发行未抓取的URL添加到queue中
print(url+"下的url数量为:"+str(len(new_urls)))
for new_url in new_urls:
if new_url not in used and new_url not in queue:
queue.append(new_url)
count -= 1
except Exception as e :
storage = {}
while len(queue) > 0 and count > 0 :
try:
url = queue.pop(0)
html = requests.get(url).text
storage[url] = html #将已经抓取过的URL存入used集合中
used.add(url)
new_urls = r.findall(html) # 将新发行未抓取的URL添加到queue中
print(url+"下的url数量为:"+str(len(new_urls)))
for new_url in new_urls:
if new_url not in used and new_url not in queue:
queue.append(new_url)
count -= 1
except Exception as e :
在网络爬虫的组成部分中,待抓取URL队列是最重要一环
待抓取队列中的URL以什么样的顺序排列,这涉及到页面抓取的先后问题
决定待抓取URL排列顺序的方法,成为抓取策略
网络爬虫使用不同的抓取策略,实质是使用不同的方法确定待抓取URL队列中URL的先后顺序
爬虫的多种抓取策略目标基本一致:优先抓取重要的网页
网页的重要想,大多数采用网页的流动性来进行度量
待抓取队列中的URL以什么样的顺序排列,这涉及到页面抓取的先后问题
决定待抓取URL排列顺序的方法,成为抓取策略
网络爬虫使用不同的抓取策略,实质是使用不同的方法确定待抓取URL队列中URL的先后顺序
爬虫的多种抓取策略目标基本一致:优先抓取重要的网页
网页的重要想,大多数采用网页的流动性来进行度量
将新下载网页中发现的链接直接插入待抓取URL队列的末尾。也就是指网络爬虫会先抓取起始网页中链接的所有网页
再选择其中一个链接网页,继续抓取在此网页中链接的所有网页
广度优先策略从根节点开始,尽可能访问离根节点最近的节点
再选择其中一个链接网页,继续抓取在此网页中链接的所有网页
广度优先策略从根节点开始,尽可能访问离根节点最近的节点