1、response六个参数
2、代码实现
1、urlretrieve参数
2、代码实现
1、单个参数
1、方法
urllib.request.quote(name) #name为字符串
2、代码实现
2、多个参数
1、方法
urllib.parse.urlencode(data) #多关键字,将其整理为字典形式(data),通过urlencode路由编码
2、代码实现
1、Get请求
2、Post请求
1、代码实现
1、代码实现
获取豆瓣电影的数据,通过定制的get请求,模拟浏览器通过ajax向服务器发送请求,获取json数据
1、豆瓣、页面、封装
2、KFC、Json、封装
1、代理池
2、快代理
1、代码实现
1、简介
XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。
XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模型。但是XPath很快的被开发者采用来当作小型查询语言。
2、xpath语法
3、安装步骤
4、代码实现
1. 介绍
类似于XPath在xml文档中的定位,JsonPath表达式通常是用来路径检索或设置Json的。其表达式可以接受“dot–notation”和“bracket–notation”格式,
2、操作符
3、资料
- JSonPath 表达式
JSonPath 是参照,xpath表达式来解析xml文档的方式,json数据结构通常是匿名的并且不一定需要有根元素。JSonPaht 用一个抽象的名字$来表示最外层对象。
JOSNPath 表达式可以使用. 符号如下:
或者使用[] 符号
从输入路径来看。内部或者输出的路径都会转化成-符号。
JSonPath 允许使用通配符 * 表示所以的子元素名和数组索引。还允许使用 ‘…’ 从E4X参照过来的和数组切分语法
表达式在下面的脚本语言中可以使用显示的名称或者索引:
使用’@'符号表示当前的对象,?(<判断表达式>) 使用逻辑表达式来过滤。
这里有个表格,说明JSONPath语法元素和对应XPath元素的对比。
XPath还有很多的语法(本地路径,操作符,和函数)没有列在这里。只要知道xpath和jsonpath脚本之中的不同点就行了。
- []在xpath表达式总是从前面的路径来操作数组,索引是从1开始。
- 使用JOSNPath的[]操作符操作一个对象或者数组,索引是从0开始。
- SonPath 例子
接下我们看jsonpath表示的例子。下面是一个简单的json数据结构代表一个书店(原始的xml文件是)
4、代码实现
1、简介
- Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。
- Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。
- Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。
2、安装(windows)
-
到http://www.crummy.com/software/BeautifulSoup/ 网站 上下载,最新版本是4.3.2。
-
下载完成之后需要解压缩,假设放到C:/python27/下。
-
“运行cmd”—“cd c:python27beautifulsoup4-4.3.2”,切换到c:python27beautifulsoup4-4.3.2目录下(根据自己解压后所放的目录和自己的版本号修改)。
-
运行命令:setup.py build、setup.py install
-
python命令下 import bs4,没报错说明安装成功。
3、节点定位
标签名查找节点
函数
soup.find(返回一个对象)
soup.find_all(返回一个列表)
select(根据选择器得到节点对象)【推荐】
与xpath对比:
#xpath: //div[@id=“listContent”]//div/div/div/div/div[2]/a/@title
#soup: #listContent > div > div > div > div > div[1] > a[title]
获取子孙节点
4、节点信息
获取节点内容
获取节点的属性
5、代码实现
浏览器自动化测试框架
1、简介
Selenium是一个用于Web应用程序测试的工具。Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样,支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驱动真实浏览器完成测试,selenium也是支持无界面浏览器操作的。比如说HtmlUnit和PhantomJs。
谷歌浏览器和chromeDriver的对应关系:http://blog.csdn.net/huilan_same/article/details/51896672
谷歌驱动的下载路径:http://chromedriver.storage.googleapis.com/index.html
安装:pip install selenium
导入:from selenium import webdriver
创建对象:browser = webdriver.Chrome(‘chromedriver.exe’)#创建一个浏览器对象,.exe文件为浏览器驱动
2、操作谷歌浏览器
需求打开浏览器 然后再搜索框中输入 韩红 然后点击百度一下 然后回退 前进 并关闭浏览器
3、元素定位
自动化要做的就是模拟鼠标和键盘来操作来操作这些元素,点击、输入等等。操作这些元素前首先要找到它们,WebDriver提供很多定位元素的方法
4、访问元素信息
5、交互浏览器
6、PhantomJS浏览器
**1、简介:**是一个无界面的浏览器,支持页面元素查找,js的执行等,由于不进行css和gui渲染,运行效率要比真实的浏览器要快很多
2、如何使用
3、代码实现
7、Chrome handless
1、系统要求
2、配置文件
3、正常代码实现
1、简介
Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner。更重要的一点是它支持 Python3 哦
官方文档:http://cn.python-requests.org/zh_CN/latest/
快速上手:http://cn.python-requests.org/zh_CN/latest/user/quickstart.html
2、安装步骤
3、常用方法
1、response函数、属性
2、get请求
3、post请求
总结:
1:get请求的参数名字是params post请求的参数的名字是data
2 请求资源路径后面可以不加?
3 不需要手动编解码
4 不需要做请求对象的定制
4、proxy定制
5、cookie定制
http://bbs.chinaunix.net/
账号密码 action123321 action123
个人资料:http://bbs.chinaunix.net/home.php?mod=space&uid=31527684&do=profile
6、云打码平台
用户登陆 actionuser action 开发者登陆 actioncode action
需要观 看开发者里的开发步骤
操作视屏在爬虫第6天中
1、简介
Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如baseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。
Scrap,是碎片的意思,这个Python的爬虫框架叫Scrapy。
2、安装框架
安装:pip install scrapy
3、原理解析
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3c80mOTJ-1592465361872)(C:UsersAdministratorDesktoppython第四阶段图片scrapy框架原理.png)]
4、创建并使用
5、测试工具:Scrapy shell
6、日志信息和日志等级
日志级别
设置
7、get请求
起始的get请求
也就是含有start_urls = [‘http://www.qiushibaike.com/’],将get请求参数放在链接中
在请求中使用get请求
8、post请求
起始的post请求
也就是不在是框架一开始就发送接收response的对象,而是重写start_requests函数(也就是重谢发送get方法)。所以之前的start_urls = [‘http://www.fang.com/SoufunFamily.htm’]也就没用了
在请求中使用post请求
9、代理ip
10、cookie登陆
也就是判读登录页面逻辑(请求路径、请求方式、请求体信息 )、一直请求页面
11、存储到mysql
settings.py
pipelines.py
1、简介
CrawlSpider:继承自scrapy.Spider,简单来说就是爬去规则的有下一页(相同模板)的网页数据。
CrawlSpider可以定义规则,再解析html内容的时候,可以根据链接规则提取出指定的链接,然后再向这些链接发送请求,所以如果有需要跟进链接的需求,意思就是爬取了网页之后,需要提取链接再次爬取,使用CrawlSpider是非常合适的。
2、提取连接
模拟使用:
提取连接:
注意事项:
3、CrawlSpider爬虫案例
read.py(spiders)#爬虫文件
items.py#items对象
settings.py#配置信息
items.py#items对象
pipelines.py#管道
middlewares.py#代理
1、分布式安装
2、scrapy、scrapy-redis区别
官方例子简单介绍:https://github.com/rmax/scrapy-redis
dmoz.py 这就是传统的CrawlSpider,这个的目的就是让数据保存到redis中, 运行方式 scrapy crawl dmoz myspider_redis.py 继承了RedisSpider,start_urls被redis_key给替换了,allow_domains这个列表不变
【注】官方说的能用__init__方法来替换allow_domains不支持目前的版本 mycrawler_redis.py 继承了RedisCrawlSpider,其它的和上面的myspider_redis.py是一样的
【注】后两种爬虫的运行方式是 scrapy runspider myspider_redis.py scrapy runspider mycrawler_redis.py
注】from scrapy_redis.spiders import RedisSpider from scrapy_redis.spiders import RedisCrawlSpider 这两个就是scrapy_redis新增加的两个组件,都是继承自官方的Spider、CrawlSpider
注意:DOWNLOAD_DELAY = 1 下载时延 【注】在爬取网站的时候,将这个选项打开,给对方一条活路
3、多台电脑部署分布式
现在有4台电脑 windows centos ubuntu macos
settings.py文件配置
爬虫文件.py
slave端执行
在多个slave配置相同代码、都连接到master端的redis上
scrapy runspider 爬虫文件.py
master端进入redis
向队列中添加起始url 这个key就是你代码中写的 redis_key lpush fen:start_urls ‘http://www.dytt8.net/html/gndy/dyzz/index.html’
1、json.loads()
2、json.dumps()
将python对象转化为json格式的字符串
3、json.load()
4、json.dump()
将python对象写入到文本中
linux下Python环境搭建、scrapy安装:见–linux下scrapy安装.txt