前端开发一起交流QQ群:740034288。
互联网创业团队兴趣QQ群:792710437。
新建《团队合伙人》贴吧:https://tieba.baidu.com/f?kw=%E5%9B%A2%E9%98%9F%E5%90%88%E4%BC%99%E4%BA%BA&fr=index。
1.爬虫的分类:即网络爬虫,模拟客户端发送网络请求,接收请求响应,按照一定规则,自动的抓取互联网信息的程序。
(1)通用爬虫:通常指搜索引擎的 爬虫,如百度搜索。通过搜索引擎搜索的局限性,其搜索的内容90%是无用的,且音频,视频,图片的内容搜索引擎无能为力(只能通过图片,视频,音频的名字进行搜索),且不同用户搜索的目的不一样,但是返回的内容相同。
(2)聚焦爬虫:针对特定网站的爬虫,如网易音乐。
2.ROBOTS协议:网站通过Robots协议告诉搜索引擎,哪些网页可以抓取,哪些不可以抓取(只有道德层面的约束力),如https://www.taobao.com/robots.txt。
#robots.txt robots协议,只有道德层面的约束力。
user-agent:baiduapoder, #允许的百度搜索引擎爬虫
Allow:/article, #允许爬取的网页
Disallow:/admin #不允许爬取的网页
拓展:
1. 当直接爬取一个网站数据比较麻烦时,可爬取该网站合作的其他网站中爬取这个网站的数据。
2. 抓包:抓取请求url,获取响应的数据。
3. 简单的爬虫案例:
import requests
#设置请求头
headers={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}
#方法1:url和参数分开请求。
#设置搜索参数
p={"wd:"Python"}
#设置IP地址或域名
url="https://www.baidu.com/s?"
#发送请求,获取响应信息
r=requests.get(url,headers=headers,params=p)
#响应码,200为正常
print(r.status_code)
#响应的url
print(r.request.url)
#方法2:url和参数拼接在一起。
url_tem="https://www.baidu.com/s?wd={}".format("Python")
r1=requests.get(url,headers=headers)
#响应码,200为正常
print(r1.status_code)
#响应的url
print(r1.request.url)
#注意:"我是{},年龄{}岁".format("Ace",(27,))是格式化字符串。和%格式化字符串效果一样。
4. 基于requests的get方法封装一个类,爬虫爬取百度贴吧的信息:request官网:https://developer.mozilla.org/zh-CN/docs/Web/API/Request。