Python爬虫常用之PyQuery
PyQuery是解析页面常用的库.是python对jquery的封装.
下面是一份解析基本页面的代码.后期用到复杂或者实用的方式再增加.
from pyquery import PyQuery as pq # 参数为字符串的情况
html_str = "<html></html>" # 参数为网页链接(需带 http://)
your_url = "http://www.baidu.com" # 参数为文件
path_to_html_file = "hello123.html" # 将参数传入pq库之后得到html页面
# d = pq(html_str)
# d = pq(etree.fromstring(html_str))
# d = pq(url=your_url)
# d = pq(url=your_url,
# opener=lambda url, **kw: urlopen(url).read())
d = pq(filename=path_to_html_file) # 此时的'd'相当于Jquery的'$',选择器,可以通过标签,id,class等选择元素 # 通过id选择
table = d("#my_table") # 通过标签选择
head = d("head") # 通过样式选择,多个样式写一起,使用逗号隔开即可
p = d(".p_font") # 获取标签内的文本
text = p.text()
print text # 获取标签的属性值
t_class = table.attr('class')
print t_class # 遍历标签内的选项
# 打印表格中的td中的文字
for item in table.items():
# 这个循环只循环一次,item仍然是pquery的对象
print item.text() for item in table('td'):
# 这个循环循环多次,item是html的对象
print item.text
用于测试的html代码:
1
2 <head>
3 <title>Test</title>
</head>
<body>
<h1>Parse me!</h1>
<img src = "" />
<p>A paragraph.</p>
<p class = "p_font">A paragraph with class.</p>
<!-- comment -->
<div>
<p>A paragraph in div.</p>
</div>
<table id = "my_table" class = "test-table">
<thead>
</thead>
<tbody>
<tr>
<td>Month</td>
<td>Savings</td>
</tr>
<tr>
<td>January</td>
<td>$100</td>
</tr>
</tbody>
</table>
</body>
</html>
分析html的结果输出如下:
A paragraph with class.
test-table
Month Savings January $100
Month
Savings
January
$100
由于使用python2,有的网页使用requests直接抓取下来放入pyquery()里面会出编码问题,这时使用unicode()转换一下即可.部分代码如下:
import requests
from pyquery import PyQuery as pq r = requests.get('http://www.baidu.com')
# d = pq(r.content)
u = unicode(r.content, 'utf-8')
d = pq(u)
Python爬虫常用之PyQuery的更多相关文章
- Python爬虫常用小技巧之设置代理IP
设置代理IP的原因 我们在使用Python爬虫爬取一个网站时,通常会频繁访问该网站.假如一个网站它会检测某一段时间某个IP的访问次数,如果访问次数过多,它会禁止你的访问.所以你可以设置一些代理服务器来 ...
- 爬虫-Python爬虫常用库
一.常用库 1.requests 做请求的时候用到. requests.get("url") 2.selenium 自动化会用到. 3.lxml 4.beautifulsoup 5 ...
- python爬虫常用第三方库
这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络 ...
- 芝麻HTTP: Python爬虫利器之PyQuery的用法
前言 你是否觉得 XPath 的用法多少有点晦涩难记呢? 你是否觉得 BeautifulSoup 的语法多少有些悭吝难懂呢? 你是否甚至还在苦苦研究正则表达式却因为少些了一个点而抓狂呢? 你是否已经有 ...
- Python 爬虫常用的库
一.常用库 1.requests 做请求的时候用到. requests.get("url") 2.selenium 自动化会用到. 3.lxml 4.beautifulsoup 5 ...
- 【Python爬虫】安装 pyQuery 遇到的坑 Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?
windows 64位操作系统下,用 Python 抓取网页,并用 pyQuery 解析网页 pyQuery是jQuery在python中的实现,能够以jQuery的语法来操作解析HTML文档,十分方 ...
- Python爬虫常用之HtmlParser
HtmlParser,顾名思义,是解析Html的一个工具.python自带的. 一.常用属性和方法介绍 HtmlParser是一个类,在使用时一般继承它然后重载它的方法,来达到解析出需要的数据的目的. ...
- Python爬虫常用库安装
建议更换pip源到国内镜像,下载会快很多:https://www.cnblogs.com/believepd/p/10499844.html requests pip3 install request ...
- python爬虫常用库和安装 -- windows7环境
1:urllib python自带 2:re python自带 3:requests pip install requests 4:selenium 需要依赖chrome ...
随机推荐
- this与$(this)的区别
this,表示当前的上下文对象是一个html对象,可以调用html对象所拥有的属性和方法. $(this),代表的上下文对象是一个jquery的上下文对象,可以调用jQuery的方法和属性值.
- bootstrap实现菜单定位
<!DOCTYPE html><html lang="zh-cn"><head><meta charset="utf-8&quo ...
- Requests接口测试(四)
Python序列化和反序列化 啥是序列化?啥是反序列化?这两个词听起来优点高大上的意思,其实呢不然,很简单的可以理解为: 序列化:将python的数据对象编码转换为json格式的字符串 反序列化:将j ...
- CSS3动画设置后台登录页背景切换图片
CSS3的动画很实用很好用,简单几句话就可以做出一个好看而且过渡平滑的body背景图片,不多说,来来来,上代码 body{ animation:mybg 7s; -webkit-animation:m ...
- jQuery 选择器2
jQuery 选择器 选择器 实例 选取 * $("*") 所有元素 #id $("#lastname") id="lastname" 的元 ...
- POJ-3481 Double Queue (splay)
The new founded Balkan Investment Group Bank (BIG-Bank) opened a new office in Bucharest, equipped w ...
- Android 应用检查更新并下载
1.在Android应用当中都有应用检查更新的要求,往往都是在打开应用的时候去更新下载. 实现的方法是:服务器端提供接口,接口中可以包含在最新APK下载的URL,最新APK的VersionCode,等 ...
- Time - Time-interval Measurements
public class TimeHelper { private long _start, _stop, _elapsed; /// <summary> /// 获取初始时间戳 /// ...
- .Net Core 自动化部署:使用docker版jenkins部署dotnetcore应用
安装docker版jenkins 因为jenkins的docker版本本身没有 dotnetcore的环境,所以我们需要先自己动手制作下包含dotnet环境的jenkins Docker Contai ...
- { "result": null, "log_id": 304592860300941982, "error_msg": "image check fail", "cached": 0, "error_code": 222203, "timestamp": 1556030094 }
这个是人脸识别时无法检测到图片报的错,有时候我们检测一张图片是否在库里面,当一张图片明显在里面,还检测不到,如下面是我的代码 package Test1; import java.io.IOExcep ...