import urllib.robotparser as urobot
import requests
url="https://www.taobao.com"
rp=urobot.RobotFileParser()
rp.set_url(url+'/robots.txt')
rp.read()
user_agent='Baiduspider'
if rp.can_fetch(user_agent,'http://www.taobao.com/product/'):
site = requests.get(url)
print('try victory')
else:
print('cannot scrap because robots.text banned you')
做一次robot.txt的尝试。先创建一个rp对象并且作为RobotFileParser对象,rp.set_url()即在成为rfp对象后给这个对象set_url,之后可直接read。
使用了一个rp.can_fetch(agent, url) ,返回布尔值。
真正实现时,应加一个循环语句来不断检测新的网页,类似于
for i in urls:
try:
ir rp.can_fetch('*',newurl):
site = urllib.request.urlopen(newyrl) #在fetch成功时,开始爬取
...
except:
...
站点地图Sitemap是robots.txt有时会定义的,他在SEO search engine optimization 搜索引擎优化 中扮演了重要角色。
Sitemap有助于访问者或搜索引擎爬虫快速找到网站中某个页面。