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

478次阅读
没有评论

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

Jsonpath

匹配规则:

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

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

流程:

  • 导入json和jsonpath两个包

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

  • B = json.loads(a) )

  • 利用jsonpath的规则来提取

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

    代码:

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

    正则表达式

    匹配规则:

    流程:

  • 导入re库

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

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

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

  • 代码:

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

    Lxml模块的xpath

    匹配规则:

    nodename

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

    /

    从根节点选取。

    //

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

    .

    选取当前节点。

    ..

    选取当前节点的父节点。

    @

    选取属性。

    通配符

    描述

    *

    匹配任何元素节点。

    @*

    匹配任何属性节点。

    node()

    匹配任何类型的节点。

    流程:

  • 导入lxml库的etree包和requests库。

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

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

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

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

  • 代码:

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

    Beautifulsoup模块

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

    惯用语句流程:

  • 从bs4导入BeautifulSoup

  • 用resquests访问网站获得响应

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

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

  • 然后利用匹配规则去匹配数据

  • 代码:

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

  • 爬虫多协程的运用

  • 流程:

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

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

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

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

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

  • 代码:

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

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

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

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

  • 流程:

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

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

  • options=webdriver.ChromeOptions()

    options.add_argument(‘–headless’)

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

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

  •       browser=webdriver.Chrome()

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

  • 利用提取规则提取想要的东西

  • 最后要记得关闭游览器 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模块操作元素的常用方法:

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

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

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

    代码:

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

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

    神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

    相关文章:

    版权声明:Python教程2022-10-28发表,共计2079字。
    新手QQ群:570568346,欢迎进群讨论 Python51学习