# robots **Repository Path**: adaixuezhang/robots ## Basic Information - **Project Name**: robots - **Description**: 爬虫学习入门 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-13 - **Last Updated**: 2021-10-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 爬虫 学习python,从爬虫做起! ### requests库 requests 库的7个主要方法: 1. requests.request():构造一个请求,支撑以下各个方法的基础方法 2. requests.get():获取HTML网页的主要方法,对应于HTTP的GET 3. requests.head():获取HTML网页头信息的方法,对应于HTTP的HEAD 4. requests.post():向HTML网页提交POST请求的方法,对应于HTTP的POST 5. requests.put():向HTML网页提交PUT请求的方法,对应于HTTP的PUT 6. requests.patch():向HTML网页提交局部修改请求,对应于HTTP的PATCH 7. requests.delete():向HTML页面提交删除请求,对应于HTTP的DELETE #### requests.request() 语法:requests.request(method, url, **kwargs) 关于`**kwargs`有以下几种类型数据: 1. get方法——params:字典或字节序列,作为参数增加到url中 2. post方法——data:字典、字节序列或文件对象,作为Request的内容 3. post方法——json:json格式的数据,作为Request的内容 4. post方法——headers:字典,HTTP定制头 5. post方法——cookies:字典或CookieJar,Request中的cookie 6. post方法——auth:元组,支持HTTP认证功能 7. post方法——file:字典类型,传输文件 8. get方法——timeout:设定超时时间,秒为单位 9. get方法——proxies:字典类型,设定访问代理服务器,可以增加登录认证 10. allow_redirects:True/False,默认为True,重定向开关 11. stream:True/False,默认为True,获取内容立即下载开关 12. verify:True/False,默认为True,认证SSL证书的开关 13. cert:本地SSL证书路径 ## 爬虫库 * Requests:小规模 * Scrapy:中规模(一个网站) * ..:全网 ## 知识点 * print 格式化 format:demo02 * 正则表达式:demo03 ## scrapy ### 5+2结构: * 5个模块: * engine * scheduler * Item pipeline * spiders:提供要爬取的URL,解析网上获取的HTML内容 * downloader * 2个中间件模块 * spiders和engine之间 * downloader和engine之间 ### 原理图 ![](https://media.adaixuezhang.cn/20210915151207.png?image) ![](https://media.adaixuezhang.cn/20210915151310.png?image) ![](https://media.adaixuezhang.cn/20210915161359.png?image) ### scrapy 常用命令 * startproject:scrapy startproject [dir] 创建一个新工程 * genspider:scrapy genspider [options] 创建一个爬虫 * settings:scrapy settings [options] 获得爬虫配置信息 * crawl:scrapy crawl 运行一个爬虫 * list:scrapy list 列出工程中所有爬虫 * shell:scrapy shell [url] 启动URL调试命令行 ### 开发步骤 1. 创建scrapy爬虫工程 2. 在工程中产生一个scrapy爬虫 3. 配置产生的spider爬虫 4. 运行爬虫获取网页 ![](https://media.adaixuezhang.cn/20210915173904.png?image) ### 练习 BaiduStocks 步骤: 1. 建立工程和Spider模板 2. 编写Spider 3. 编写Item Pipelines * 配置pipelines.py文件 * 定义对爬取项(Scraped Item)的处理类 * 在settings.py 配置 ITEM_PIPELINES 选项 ```python ITEM_PIPELINES = { 'BaiduStocks.pipelines.BaidustocksInfoPipeline': 300, } ``` 4. 优化:settings.py 配置文件 CONCURRENT_REQUESTS Downloader最大并发请求下载数量,默认为2 CONCURRENT_ITEMS Item Pipeline最大并发ITEM处理数量,默认为 100 CONCURRENT_REQUESTS_PER_DOMAIN 每个目标域名最大并发请求处理数量,默认为8 CONCURRENT_REQUESTS_PER_IP 每个目标 IP 最大并发请求处理数量,默认为0,非0有效 #### scrapy工程目录结构 ``` ├── demo05 scrapy框架的用户自定义python代码 │   ├── __init__.py │   ├── items.py items代码模板(继承类) │   ├── middlewares.py middlewares代码模板(继承类) │   ├── pipelines.py pipelines代码模板(继承类) │   ├── settings.py scrapy爬虫的配置文件 │   └── spiders Spider代码模板目录(继承类) │   └── __init__.py └── scrapy.cfg 部署scrapy爬虫的配置文件 ``` --- ### urllib * demo06