python之pyquery 学习
pyquery是jQuery的Python实现,可以用以解析HTML网页的内容。官网文档:http://pythonhosted.org/pyquery/
下载:https://pypi.python.org/pypi/pyquery#downloads
测试了一下其功能如下:
以http://www.verycd.com/topics/2960375/的网页源码为例:
提取originLink的图片链接地址:
1: #!/usr/bin/python
2: from pyquery import PyQuery as pyq
3:
4: doc=pyq(url='http://www.verycd.com/topics/2960375/')
5: for item in doc('span.post_origin_img'):
6: print doc(item).attr('originlink')
执行结果:
注1:因为在span标签内,并且有class=”post_origin_img” 所以可以通过span.post_origin_img定位到标签。然后该图片对应的是originLink,所以可以对对应的item取其属性为originLink的值。
注2:这里使用的originlink而不是originLink,是因为测试时,
1: for item in doc('span.post_origin_img'):
2: print doc(item)
3: print doc(item).attr('originlink')
1: a title="PDF[2013/08/12 04:33:25]资源更新 共1个文件 42.2MB" href="/topics/2960275/" onclick="VeryCD.Track('/stat/topicsHot/');" target="_blank">《金庸全集-三联典藏版》高清文字版[PDF]</a> </dd>
2: <dd class="itshot">
3: <a id="entry_link_2960032" title="PDF[2013/08/11 05:18:31]资源更新 共1个文件 882.31KB" href="/topics/2960032/" onclick="VeryCD.Track('/stat/topicsHot/');" target="_blank" style="text-decoration:none;"><img load-src="http://i-7.vcimg.com/crop/7640b510631463a87309ad475a2505c328619(100x100)/thumb.jpg" alt="img" class="hot_img" height="100" width="100" style="display:inline;">
4: <div id="entry_2960032" style="display:none;" class="entry_score_small"></div>
5: </a>
6: <br />
7: <a title="PDF[2013/08/11 05:18:31]资源更新 共1个文件 882.31KB" href="/topics/2960032/" onclick="VeryCD.Track('/stat/topicsHot/');" target="_blank">《灵魂21克》文字版[PDF]</a> </dd>
8: <dd class="itshot">
9: <a id="entry_link_2861322" title="EPUB[2011/07/10 02:06:05]资源更新 共47个文件 1.35GB" href="/topics/2861322/" onclick="VeryCD.Track('/stat/topicsHot/');" target="_blank" style="text-decoration:none;"><img load-src="http://i-7.vcimg.com/crop/349a7faf7ed72283e92b9b071678f6d1155641(100x100)/thumb.jpg" alt="img" class="hot_img" height="100" width="100" style="display:inline;">
10: <div id="entry_2861322" style="display:none;" class="entry_score_small"></div>
11: </a>
可以根据id抽取内容,使用#id名字即可:实例如下:
1: #!/usr/bin/python
2: from pyquery import PyQuery as pyq
3:
4: doc=pyq(url='http://www.verycd.com/topics/2960375/')
5: for item in doc('#entry_link_2861322'):
6: print doc(item)
执行结果:抽取了id为entry_link_2861322的html
自己构造测试
1: doc=pyq('<;p id="test" class="test1" attr1="attr1_value">hello</p>')
2: print doc('p')
3: print doc('p#test')
4: print doc('p#test.test1')
5: print doc('p#test.test1').attr('attr1')
执行结果:
结果上面的测试,我们看以看到使用pyquery,我们可以指定html的tag来抽取,是十分方便的。
python之pyquery 学习的更多相关文章
- 一个Python爬虫工程师学习养成记
大数据的时代,网络爬虫已经成为了获取数据的一个重要手段. 但要学习好爬虫并没有那么简单.首先知识点和方向实在是太多了,它关系到了计算机网络.编程基础.前端开发.后端开发.App 开发与逆向.网络安全. ...
- Python 装饰器学习
Python装饰器学习(九步入门) 这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 1 2 3 4 5 6 7 8 # -*- c ...
- Requests:Python HTTP Module学习笔记(一)(转)
Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...
- 从Theano到Lasagne:基于Python的深度学习的框架和库
从Theano到Lasagne:基于Python的深度学习的框架和库 摘要:最近,深度神经网络以“Deep Dreams”形式在网站中如雨后春笋般出现,或是像谷歌研究原创论文中描述的那样:Incept ...
- Comprehensive learning path – Data Science in Python深入学习路径-使用python数据中学习
http://blog.csdn.net/pipisorry/article/details/44245575 关于怎么学习python,并将python用于数据科学.数据分析.机器学习中的一篇非常好 ...
- (转载)Python装饰器学习
转载出处:http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html 这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方 ...
- python网络爬虫学习笔记
python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...
- Python装饰器学习
Python装饰器学习(九步入门) 这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 ? 1 2 3 4 5 6 7 8 # -*- ...
- Python的基础学习(第二周)
模块初始 sys模块 import sys sys.path #打印环境变量 sys.argv#打印该文件路径 #注意:该文件名字不能跟导入模块名字相同 os模块 import os cmd_res ...
随机推荐
- position: relative 和 position: absoution 的详解
position属性指定一个元素(静态的,相对的,绝对或固定)的定位方法的类型 relative:生成相对定位的元素,相对于其正常位置进行定位. 对应下图的偏移 absolute: 生成绝对定位的元素 ...
- MVC5+EF6 完整教程
随笔分类 - MVC ASP.NET MVC MVC5+EF6 完整教程17--升级到EFCore2.0 摘要: EF Core 2.0上周已经发布了,我们也升级到core 文章内容基于vs2017, ...
- idea maven springmvc mybabit 多模块管理整合
一.安装软件jdk1.7,tomcat7.0,idea,mysql,maven 二.在idea中配置jdk 1.依次点开File -->Project Structure,点击左侧标签页,点击S ...
- 2017-2018 ACM-ICPC, Asia Tsukuba Regional Contest E:Black or White
这道题可以比较容易看出是线性DP.设dp[i]代表把前i个格子刷成目标状态的最小步数. 写出状态转移方程 dp[i]=min( dp[j]+calc(j+1,i) ) (i-j<=k) calc ...
- 【CSS】三栏布局的经典实现
要求:自适应宽度,左右两栏固定宽度,中间栏优先加载: <!DOCTYPE html> <html> <head> <title>layout</t ...
- visual studio 自定义警告标签
写代码中经常会遇见某段代码写的不大合适或者是有隐患,但是一时半会有没时间不去完善,总体上不影响程序,也就放下了 结果时间一久就给忘了 vs提供了自定义警告的功能,这样就能有个提醒啦,方便以后改进 us ...
- React Native 安卓模拟器调出Dev Setting
Android Studio 模拟器调出Dev Setting 实现热更新 cmd进入项目目录 F:\study\AwesomeProject> 执行 adb shell input keyev ...
- zabbix之自动注册,编写触发器:一定时间内超过某个负载值的时间
zabbix中添加主机很多时可以考虑自动注册来自动添加,下面按照图片顺序来看,zabbix版本:3.0.28 超过负载30%的持续时间 创建触发器:
- Delphi中的线程类(转)
Delphi中的线程类 (转) Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对 TThread类的几个成员作一简单介绍,再说明一下 ...
- 线段树求后继+环——cf1237D
/* 首先开三倍消环(两倍是不够的),倒序求值,线段树找一下后继即可 */ #include<bits/stdc++.h> using namespace std; #define N 3 ...