热门推荐
零、爬虫基础(通用爬虫)
2024-11-10 01:13

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、操作符

符号描述$查询的根节点对象,用于表示一个json数据,可以是数组或对象@过滤器断言(filter predicate)处理的当前节点对象,类似于java中的this字段*通配符,可以表示一个名字或数字…可以理解为递归搜索,Deep scan. Available anywhere a name is required..表示一个子节点[‘’ (, ‘’)]表示一个或多个子节点[ (, )]表示一个或多个数组下标[start:end]数组片段,区间为[start,end),不包含end[?()]过滤器表达式,表达式结果必须是boolean

3、资料

  • JSonPath 表达式

JSonPath 是参照,xpath表达式来解析xml文档的方式,json数据结构通常是匿名的并且不一定需要有根元素。JSonPaht 用一个抽象的名字$来表示最外层对象。

JOSNPath 表达式可以使用. 符号如下

 

或者使用[] 符号

 

从输入路径来看。内部或者输出的路径都会转化成-符号。

JSonPath 允许使用通配符 * 表示所以的子元素名和数组索引。还允许使用 ‘…’ 从E4X参照过来的和数组切分语法

表达式在下面的脚本语言中可以使用显示的名称或者索引

 

使用’@'符号表示当前的对象,?(<判断表达式>) 使用逻辑表达式来过滤。

 

这里有个表格,说明JSONPath语法元素和对应XPath元素的对比。

XPathJSONPathDescription/$表示根元素.@当前元素/. or []子元素…n/a父元素//…递归下降,JSONPath是从E4X借鉴的。**通配符,表示所有的元素@n/a属性访问字符[][]子元素操作符|[,]连接操作符在XPath 结果合并其它结点集合。JSONP允许name或者数组索引。n/a[start🔚step]数组分割操作从ES4借鉴。[]?()应用过滤表示式n/a()脚本表达式,使用在脚本引擎下面。()n/aXpath分组

XPath还有很多的语法(本地路径,操作符,和函数)没有列在这里。只要知道xpath和jsonpath脚本之中的不同点就行了。

  • []在xpath表达式总是从前面的路径来操作数组,索引是从1开始。
  • 使用JOSNPath的[]操作符操作一个对象或者数组,索引是从0开始。
  • SonPath 例子

接下我们看jsonpath表示的例子。下面是一个简单的json数据结构代表一个书店(原始的xml文件是

 
XPathJSONPath结果书点所有书的作者所有的作者store的所有元素。所有的bookst和bicyclestore里面所有东西的price第三个书最后一本书前面的两本书。过滤出所有的包含isbn的书。过滤出价格低于10的书。所有元素。

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

1、windows

 

2、linux

 

3、客户端安装

    以上就是本篇文章【零、爬虫基础(通用爬虫)】的全部内容了,欢迎阅览 ! 文章地址:http://www78564.xrbh.cn/quote/23522.html 
     动态      相关文章      文章      同类文章      热门文章      栏目首页      网站地图      返回首页 迅博思语移动站 http://www78564.xrbh.cn/mobile/ , 查看更多