zoukankan      html  css  js  c++  java
  • 爬虫之PyQuery的base了解

    爬虫之PyQuery的base了解

    • pyquery库是jQuery的Python实现,能够以jQuery的语法来操作解析 HTML 文档,易用性和解析速度都很好,和它差不多的还有BeautifulSoup,都是用来解析的。相比BeautifulSoup完美翔实的文档,虽然PyQuery库的文档弱爆了, 但是使用起来还是可以的,有些地方用起来很方便简洁。

    • 本地文件test.html

      <html lang="en">
      <head>
      	<meta charset="UTF-8" />
      	<title>测试bs4</title>
      </head>
      <body>
      	<div>
      		<p>百里守约</p>
      	</div>
      	<div class="song">
      		<p>李清照</p>
      		<p>王安石</p>
      		<p>苏轼</p>
      		<p>柳宗元</p>
      		<a href="http://www.song.com/" title="赵匡胤" target="_self">
      			<span>this is span</span>
      		宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱</a>
      		<a href="" class="du">总为浮云能蔽日,长安不见使人愁</a>
      		<img src="http://www.baidu.com/meinv.jpg" alt="" />
      	</div>
      	<div class="tang">
      		<ul>
      			<li><a href="http://www.baidu.com" title="qing">清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村</a></li>
      			<li><a href="http://www.163.com" title="qin">秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山</a></li>
      			<li><a href="http://www.126.com" alt="qi">岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君</a></li>
      			<li><a href="http://www.sina.com" class="du">杜甫</a></li>
      			<li><a href="http://www.dudu.com" class="du">杜牧</a></li>
      			<li><b>杜小月</b></li>
      			<li><i>度蜜月</i></li>
      			<li><a href="http://www.haha.com" id="feng">凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘</a></li>
      		</ul>
      	</div>
      </body>
      </html>
      

    1.打开html本地文件:

    from pyquery import PyQuery as pq
    
    with open('./test.html','r',encoding='utf-8')as f:
        content = f.read()
    
    doc = pq(content)
    print(type(doc))#<class 'pyquery.pyquery.PyQuery'>
    

    2.打开网址

    from pyquery import PyQuery as pq
    doc = pq('https://www.baidu.com',encoding='utf-8')
    print(doc('head'))
    #打印百度的头信息
    

    3.基于CSS选择器查找

    from pyquery import PyQuery as pq
    with open('./test.html','r',encoding='utf-8')as f:
        content = f.read()
    
    doc = pq(content)
    print(doc('.tang ul li'))
    #注意层级关系以空格隔开
    

    4.选择器

    5.查找当前标签的父或子标签

    from pyquery import PyQuery as pq
    html="""
    <div class="tang">
    		<ul>
    			<li class="shi"><a href="http://www.baidu.com" title="qing">清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村</a></li>
    			<li><a href="http://www.163.com" title="qin">秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山</a></li>
    			<li><a href="http://www.126.com" alt="qi">岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君</a></li>
    			<li><a href="http://www.sina.com" class="du">杜甫</a></li>
    			<li><a href="http://www.dudu.com" class="du">杜牧</a></li>
    			<li><b>杜小月</b></li>
    			<li><i>度蜜月</i></li>
    			<li><a href="http://www.haha.com" id="feng">凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘</a></li>
    		</ul>
    	</div>
    
    """
    
    doc = pq(html)
    
    item = doc('div ul')
    # print(item)
    print(item.children())#li签,查找父标签
    print(item.parent())#div签,查找子标签
    print(item.children('[class]'))#拿到li签,并且带有class属性
    

    6.获取属性值

    from pyquery import PyQuery as pq
    html="""
    <div class="tang">
    		<ul>
    			<li class="shi"><a href="http://www.baidu.com" title="qing">清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村</a></li>
    			<li><a href="http://www.163.com" title="qin">秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山</a></li>
    			<li><a href="http://www.126.com" alt="qi">岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君</a></li>
    			<li><a href="http://www.sina.com" class="du">杜甫</a></li>
    			<li><a href="http://www.dudu.com" class="du">杜牧</a></li>
    			<li><b>杜小月</b></li>
    			<li><i>度蜜月</i></li>
    			<li><a href="http://www.haha.com" id="feng">凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘</a></li>
    		</ul>
    	</div>
    
    """
    
    doc = pq(html)
    
    item = doc('div ul li a')
    print(item.attr('href'))#http://www.baidu.com
    print(item.attr('title'))#qing
    

    7.获取标签的内容

    from pyquery import PyQuery as pq
    
    html="""
    <div class="tang">
    		<ul>
    			<li class="shi"><a href="http://www.baidu.com" title="qing">清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村</a></li>
    			<li><a href="http://www.163.com" title="qin">秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山</a></li>
    			<li><a href="http://www.126.com" alt="qi">岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君</a></li>
    			<li><a href="http://www.sina.com" class="du">杜甫</a></li>
    			<li><a href="http://www.dudu.com" class="du">杜牧</a></li>
    			<li><b>杜小月</b></li>
    			<li><i>度蜜月</i></li>
    			<li><a href="http://www.haha.com" id="feng">凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘</a></li>
    		</ul>
    	</div>
    
    """
    doc = pq(html)
    
    item = doc('a').text()
    print(item)
    #清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村 秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山 岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君 杜甫 杜牧 凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘
    

    8.其他用法

    from pyquery import PyQuery as pq
    
    html="""
    <div class="tang">
    		<ul>
    			<li class="shi"><a href="http://www.baidu.com" title="qing">清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村</a></li>
    			<li><a href="http://www.163.com" title="qin">秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山</a></li>
    			<li><a href="http://www.126.com" alt="qi">岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君</a></li>
    			<li><a href="http://www.sina.com" class="du">杜甫</a></li>
    			<li><a href="http://www.dudu.com" class="du">杜牧</a></li>
    			<li><b>杜小月</b></li>
    			<li><i>度蜜月</i></li>
    			<li><a href="http://www.haha.com" id="feng">凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘</a></li>
    		</ul>
    	</div>
    
    """
    
    doc = pq(html)
    
    item = doc('div ul')
    
    # item = doc('a').text()
    print(item.find('li a'))
    #遍历循环li下的a标签。
    for i in item.find('li a'):
        print(dir(i))
        # print(i.attrib)#{'href': 'http://www.baidu.com', 'title': 'qing'}里面当前a签所有的属性
        print(i.text)#a标签内容
        print(i.tag)# a标签
        print(i.values)#一个绑定对象<bound method _Element.values of <Element a at 0x201328bfcc8>>
    
  • 相关阅读:
    antipirate AD
    猪头符号
    开发过程中经常出现的问题及解决方案
    CS0016: 未能写入输出文件C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\source code\00f88265\65f00fab\App_Web_w56x7oz6.dll拒绝访问
    ASPxComboBox控件联动效果bug改进
    工作中的点滴积累
    每日一句
    每日一句
    解决ora12154的问题
    如何查看eclipse版本?
  • 原文地址:https://www.cnblogs.com/xujunkai/p/11420345.html
Copyright © 2011-2022 走看看