python爬虫笔记:简单使用爬虫四大解析方法

1.目前所学爬虫的四种解析方法

Jsonpath

匹配规则:

从根节点$开始然后利用“.”来依次向下访问,可以用“..”来直接定位到需要的元素

python爬虫笔记:简单使用爬虫四大解析方法_第1张图片

流程:

  1. 导入json和jsonpath两个包

  2. 利用loads()方法将json文件加载成python中的字典(

B = json.loads(a) )

  1. 利用jsonpath的规则来提取

C = jsonpath.jsonpath( json文件的字典类型名字,规则)

代码:

python爬虫笔记:简单使用爬虫四大解析方法_第2张图片

正则表达式

匹配规则:

流程:

  1. 导入re库

  2. 正常从网上获取html,并转码

  3. 而后用re.compile()函数将正则表达式的字符串格式编译成对象并赋值出去

  4. 将该对象在html中去匹配,(对象名.findall(文档名))

代码:

python爬虫笔记:简单使用爬虫四大解析方法_第3张图片

Lxml模块的xpath

匹配规则:

nodename

选取此节点的所有子节点。

/

从根节点选取。

//

从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。

.

选取当前节点。

..

选取当前节点的父节点。

@

选取属性。

通配符

描述

*

匹配任何元素节点。

@*

匹配任何属性节点。

node()

匹配任何类型的节点。

流程:

  1. 导入lxml库的etree包和requests库。

  2. 正常爬取想要的网站(requests.get())。

  3. 然后将爬取到的html转化为utf8的形式(html=res.content.decode(‘utf8’))。

  4. 然后先将转换后的html文档变成xml文档利用xml=etree.HTML()方法(参数为转换的html????????

  5. 最后就是用xml.xpath()方法去提取数据了(此处参数为规则)

代码:

python爬虫笔记:简单使用爬虫四大解析方法_第4张图片

Beautifulsoup模块

匹配规则:xxx=bs.find_all(‘模块名’,属性_=’名字’)

惯用语句流程:

  1. 从bs4导入BeautifulSoup

  2. 用resquests访问网站获得响应

  3. 将网络响应解码成字符串形式

  4. 然后去解析HTML文档 运用:bs=BeautifulSoup(html,’html.parser’)html为要解析的文本,html.parser为解析器

  5. 然后利用匹配规则去匹配数据

代码:

python爬虫笔记:简单使用爬虫四大解析方法_第5张图片

  1. 爬虫多协程的运用

流程:

  1. 导入各个模块与包(声明猴子补丁)

  2. .写个url列表把网址都存放进去

  3. 创建queue()队列对象(队列对象的作用就是将url全部添加到里面后,爬虫要爬取时才从队列队像里面拿一个网址出来爬取,故而可以达到调节一个爬虫崩掉后剩余的网址无法完成)

  4. 创建crawler函数(作用为:从url列表里面取出网址后访问网站获取html文档存入文件中,该类的执行体)

  5. 创建任务列表(普通列表)以此来存放任务,先用for循环来创建需要有多少个爬虫来执行,后用gevent.spawn()函数(参数为def函数)来创建执行某函数的任务,而后将结果赋给task后将task加入任务列表中→6.用gevent.joinall()去执行任务(参数为一个列表,就是所要执行的任务列表)

代码:

python爬虫笔记:简单使用爬虫四大解析方法_第6张图片

python爬虫笔记:简单使用爬虫四大解析方法_第7张图片

python爬虫笔记:简单使用爬虫四大解析方法_第8张图片

  1. selenium模块(实现抓取动态网页,模拟真人操作电脑)

流程:

  1. 先导入包,将selenium库的webdriver包导入程序

  2. 如果想要不显示出来的话,就要添加无界面参数(

options=webdriver.ChromeOptions()

options.add_argument(‘--headless’)

options.add_argument(‘--no-sandbox’))

  1. 而后进行设置游览器引擎,如果要添加无界面的话就要把参数赋进去

      browser=webdriver.Chrome()

  1. 用引擎调用get方法去获取服务器响应(将响应传给了引擎,此时引擎是有html数据的)

  2. 利用提取规则提取想要的东西

  3. 最后要记得关闭游览器 close()方法

(可以模拟手机去登录网站,手机端获取的源码和pc端不一样options.add_argument( '--user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3') )

可以与beautifulsoup一起用更佳:

Selenium有个方法是Browser.page_source其作用为获取网页源码,获取到了html就可以用beautifulsoup去解析html然后再用匹配规则去匹配数据

代码如下:

       browser.get(网址)

(中间需要给时间让selenium去加载页面)

Html=browser.page_source

Html=Html.content.decode(‘utf8’)

Bs=BeautifulSoup(html,’html.parser’)

(匹配规则)

selenium模块操作元素的常用方法:

  1. clear() 清楚元素内容 ②.send_keys()模拟按键输入,自动填写表单 ③.click() 点击元素

Selenium模块的提取单个元素的方法(提取多个元素在selenium后加s):

python爬虫笔记:简单使用爬虫四大解析方法_第9张图片

代码:

python爬虫笔记:简单使用爬虫四大解析方法_第10张图片

python爬虫笔记:简单使用爬虫四大解析方法_第11张图片

你可能感兴趣的:(python,爬虫,数据挖掘)