从零起步 系统入门Python爬虫工程师 学习 教程 资源
爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。
原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。
根据被爬网站的数量的不同,我们把爬虫分为:
· 通用爬虫 :通常指搜索引擎的爬虫
· 聚焦爬虫 :针对特定网站的爬虫
Robots协议:网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,但它仅仅是道德层面上的约束。
浏览器会主动请求js,css等内容,js会修改页面的内容,js也可以重新发送请求,最后浏览器渲染出来的内容在elements中,其中包含css,图片,js,url地址对应的响应等。
但是在爬虫中,爬虫只会请求url地址,对应的拿到url地址对应的响应。浏览器渲染出来的页面和爬虫请求的页面并不一样。所以在爬虫中,需要以url地址对应的响应为准来进行数据的提取。
url的形式:scheme://host[:port#]/path/…/[?query-string][#anchor]
· scheme:协议(例如:http, https, ftp)
· host:服务器的IP地址或者域名
· port:服务器的端口(如果是走协议默认端口,80 or 443)
· path:访问资源的路径
· query-string:参数,发送给http服务器的数据
· anchor:锚(跳转到网页的指定锚点位置)
HTTP:超文本传输协议,默认端口号:80
HTTPS:HTTP + SSL(安全套接字层),默认端口号:443 (HTTPS比HTTP更安全,但是性能更低)
HTTP常见请求头
1. Host (主机和端口号)
2. Connection (链接类型)
3. Upgrade-Insecure-Requests (升级为HTTPS请求)
4. User-Agent (浏览器名称)
5. Accept (传输文件类型)
6. Referer (页面跳转处)
7. Accept-Encoding(文件编解码格式)
8. Cookie (Cookie)
9. x-requested-with :XMLHttpRequest (是Ajax 异步请求)
常见的请求方法
· GET
· POST
· 我刚整理了一套2018最新的0基础入门和进阶教程,无私分享,加Python学习q-u-n :二二七,四三五,四五零 即可获取,内附:开发工具和安装包,以及系统学习路线图
有关 GET 请求的其他一些注释:
· GET 请求可被缓存
· GET 请求保留在浏览器历史记录中
· GET 请求可被收藏为书签
· GET 请求不应在处理敏感数据时使用
· GET 请求有长度限制
· GET 请求只应当用于取回数据
有关 POST 请求的其他一些注释:
· POST 请求不会被缓存
· POST 请求不会保留在浏览器历史记录中
· POST 不能被收藏为书签
· POST 请求对数据长度没有要求
·
常见的状态码:
·
o 200:成功
o 302:临时转移至新的url
o 307:临时转移至新的url
o 404:not found
o 500:服务器内部错误
scrapy项目实现流程:
o 创建一个scrapy项目:scrapy startproject +<项目名字>
o 生成一个爬虫:scrapy genspider +<爬虫名字> + <允许爬取的域名>
o 提取数据:完善spider,使用xpath等方法
o 保存数据:pipeline中保存数据
scrapy.cfg :项目的配置文件
mySpider/ :项目的 Python 模块,将会从这里引用代码
mySpider/items.py :项目的目标文件
mySpider/pipelines.py :项目的管道文件
mySpider/settings.py :项目的设置文件
mySpider /spiders/ :存储爬虫代码目录
认识scrapy的debug信息
每次程序启动后,默认情况下,终端都会出现很多的debug信息,那么下面我们来简单认识下这些信息
·
·
·
scrapy shell的使用
·
o response.url:当前响应的url地址
o response.request.url:当前响应对应的请求的url地址
o response.headers:响应头
o response.body:响应体,也就是html代码,默认是byte类型
o response.requests.headers:当前响应的请求头
settings.py中的重点字段和内涵
o USER_AGENT 设置ua
o ROBOTSTXT_OBEY 是否遵守robots协议,默认是遵守
o CONCURRENT_REQUESTS 设置并发请求的数量,默认是16个
o DOWNLOAD_DELAY 下载延迟,默认无延迟
o COOKIES_ENABLED 是否开启cookie,即每次请求带上前一次的cookie,默认是开启的
o DEFAULT_REQUEST_HEADERS 设置默认请求头
o SPIDER_MIDDLEWARES 爬虫中间件,设置过程和管道相同
o DOWNLOADER_MIDDLEWARES 下载中间件