1、如何爬取图片数据?
方式1:基于requests
方式2:基于urllib
注:urllib模块作用和requests模块一样,都是基于网络请求的模块。当requests问世后就迅速代替了urllib
2、上述两种方法爬取图片的不同之处是什么?
使用urllib的方式爬取图片无法进行UA伪装,而requests方法可以。
3、分析开发者工具当中的Elements和network这两个选项对应的页面源码数据有何不同之处。
(1)Eelements中包含的显示的页面源码数据为当前页面所有的数据加载完毕后,对应的完整页面数据(包含动态加载数据)
(2)network中显示的页面源码数据仅仅为某一个单独的请求的响应数据(不包含动态加载数据)
4、数据解析的作用是什么?
用来实现聚焦爬虫
5、数据解析的通用原理是什么?
(1)指定标签的定位
(2)取出标签中存储的数据或者标签中属性中的数据
6、网页中显示存储在哪里?
都是存储在html的标签或标签的属性当中
常用的正则表达式
.:除换行之外的所有字符
[]:[aoe][a-w]匹配集合中的任意一个字符
\d:数字[0-9]
\D:非数字
\W:非\w
\w:数字、字母、下划线、中文
\s:所有的空白字符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\]
\S:非空白
数量修饰:
* :任意多次
+:至少1次
?:可有可无 0次或者1次
{m}:固定m次
{m,}:至少m次
{m,n}:m到n次
边界:
$:以某某结尾
^:以某某开头
分组:(a,b)
贪婪模式:.*
非贪婪模式:.*?
1、bs4解析的原理是什么?
(1)实例化一个Beautifulsoup对象,且将待解析的页面源码加载到该对象中
(2)调用Beautifulsoup对象中相关方法或者属性进行标签定位和文本数据提取
2、Beautifulsoup对象的实例化
(1)Beautifulsoup(fp,'xml'):用来将本地存储的html文档进行解析
(2)Beautifulsoup(page_text,'/xml'):用来将互联网上请求到页面源码数据进行解析
3、标签定位
(1)soup.tageName:只可以定位到第一次出现tagName标签
(2)soup.find('tageName',attaName='Vaule'):属性定位
(3)soup.findALL:跟find一样的作用属性定位,只不过findALL返回的是列表
(4)soup.select('tang>ul>li')
4、取数据
(1).text:返回的是该标签下的所有文本内容
(2).stribg:返回的是该标签直系的文本内容
1、解析原理
(1)实例化一个etree的对象,且将待解析的页面资源加载到该对象中
(2)调用etree对象,且将待解析的页面源码加载到该对象中
2、实例化etree对象
(1)etree.parse('filename'):将本地html文档加载到该对象中
(2)etree.HTML('page_text'):网站获取加载到该对象
3、标签定位
属性定位:tagName[@attrName='Vaule']
4、取文本
(1)/text():直系文本内容
(2)//text():所有的文本内容
5、取属性
/attrName
6、局部数据解析
将定位到的标签作为待解析的数据,再次用xpath表达式解析数据
注:在局部数据解析的时候,xpath表达式中要使用./操作,./表示的就是当前局部数据(xpath的调用者)
总结:
最常用的解析方法还是bs4和xpath,所以掌握这两种方法是主要的,需要多多练习。