标签: pyquery

PyQuery:仅获取元素的文本,而不获取子元素的文本

我有以下HTML:

<h1 class="price">
 <span class="strike">$325.00</span>$295.00
</h1>
Run Code Online (Sandbox Code Playgroud)

我想把295美元拿出来。但是,如果我仅按如下方式使用PyQuery:

price = pq('h1').text()
Run Code Online (Sandbox Code Playgroud)

我得到两个价格。

仅提取jQuery中元素的直接子文本看起来相当复杂-在PyQuery中有没有办法做到这一点?

目前,我正在分别提取第一个价格,然后使用replace将其从文本中删除,这有点麻烦。

谢谢你的帮助。

python screen-scraping pyquery

5
推荐指数
1
解决办法
2078
查看次数

PyQuery如何将元素追加并重命名为每个子元素

如何将类的属性附加或插入其子元素,但仅针对直接子元素,然后重复下一个类和子元素.

在文档中,这里引用了pyquery操作

>>> d = pq('<html><body><div id="test"><a href="http://python.org">python</a> !</div></body></html>') >>> p.prependTo(d('#test')) [<p#hello.hello>] >>> d('#test').html() u'<p class="hello" ..
Run Code Online (Sandbox Code Playgroud)

样品

<meeting id="42499" barriertrial="0" venue="Royal Randwick" date="2016-04-09T00:00:00" gearchanges="-1" stewardsreport="-1" gearlist="-1" racebook="0" postracestewards="0" meetingtype="TAB" rail="Timing - Electronic : Rail - +6m 1600-wp +3m Rem" weather="Fine      " trackcondition="Soft 6    " nomsdeadline="2016-04-04T11:00:00" weightsdeadline="2016-04-05T16:00:00" acceptdeadline="2016-04-06T09:00:00" jockeydeadline="2016-04-06T12:00:00">
  <club abbrevname="Australian Turf Club" code="56398" associationclass="1" website="http://" />
  <race id="211911" number="1" nomnumber="10" division="0" name="TFE HOTELS FERNHILL HANDICAP" mediumname="FERNHILL" shortname="FERNHILL HCP" stage="Results" distance="1600" minweight="0" raisedweight="0" class="~         " age="2         " grade="0" weightcondition="QLT …
Run Code Online (Sandbox Code Playgroud)

python xml-parsing pyquery

5
推荐指数
1
解决办法
158
查看次数

解析lxml中的html主体片段

我正在尝试解析html的片段:

<body><h1>title</h1><img src=""></body>
Run Code Online (Sandbox Code Playgroud)

我用lxml.html.fromstring.它让我疯狂,因为它不断剥离<body>我的碎片标签:

 > lxml.html.fromstring('<html><h1>a</h1></html>').tag
 'html'
 > lxml.html.fromstring('<div><h1>a</h1></div>').tag
 'div'
 > lxml.html.fromstring('<body><h1>a</h1></body>').tag
 'h1'
Run Code Online (Sandbox Code Playgroud)

我也试过了document_fromstring,fragment_fromstring,clean_htmlpage_structure=False等...没有什么工作.

我需要使用lxml,因为我将html片段传递给PyQuery.

我只是希望lxml不要弄乱我的html片段.有可能吗?

python lxml pyquery lxml.html

4
推荐指数
1
解决办法
2426
查看次数

使用Python将整个JSON整合到一个SQLite字段中

我有一个简单的问题.我正在尝试从在线源中提取JSON,并将其存储在SQLite表中.除了将数据存储在富表中,对应于JSON中的许多字段之外,我还想在每次拉取时将整个JSON转储到表中.

该表看起来像:

CREATE TABLE Raw_JSONs (ID INTEGER PRIMARY KEY ASC, T DATE DEFAULT (datetime('now','localtime')), JSON text);
Run Code Online (Sandbox Code Playgroud)

我使用以下python代码从某个URL中提取了一个JSON:

from pyquery import PyQuery
from lxml import etree
import urllib

x = PyQuery(url='json')
y = x('p').text()
Run Code Online (Sandbox Code Playgroud)

现在,我想执行以下INSERT命令:

import sqlite3

db = sqlite3.connect('a.db')
c = db.cursor()

c.execute("insert into Raw_JSONs values(NULL,DATETIME('now'),?)", y)
Run Code Online (Sandbox Code Playgroud)

但我告诉我,我提供了错误的数字绑定(即数千,而不是1).我收集它正在读取y变量作为JSON的所有不同元素.

有人可以帮我存储JSON,完整吗?

此外,由于我显然是这个JSON游戏的新手,所以推荐的任何在线资源都会令人惊叹.

谢谢!

python sqlite json pyquery

4
推荐指数
1
解决办法
4724
查看次数

如何访问 PyQuery 查询中的第一项(或第 x 项)?

我对其中一项测试进行查询,该测试返回 2 个结果。具体来说,使用发现的大纲的第三级

query = html("ul ol ul")
Run Code Online (Sandbox Code Playgroud)

如何选择第一个或第二个无序列表?

query[0]
Run Code Online (Sandbox Code Playgroud)

衰减为 HTMLElement

list(query.items())[0]
Run Code Online (Sandbox Code Playgroud)

或者

query.items().next() #(in case of the first element)
Run Code Online (Sandbox Code Playgroud)

还有什么我看不到的更好的方法吗?

笔记:

query = html("ul ol ul :first")
Run Code Online (Sandbox Code Playgroud)

获取每个列表的第一个元素而不是第一个列表。

python pyquery

4
推荐指数
1
解决办法
1273
查看次数

AttributeError:'XPathExpr'对象没有属性'add_post_condition'

我正在尝试在Windows 上安装pyquery,当我尝试做这样的选择时,我得到以下错误d('p:first').其他一切似乎都在起作用.知道我错过了什么吗?这个问题只发生在我的Windows机器上,我的MAC工作正常.

Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pyquery import PyQuery as pq
>>> d = pq("<p></p>")
>>> d('p:first')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\pyquery-1.2.4-py2.7.egg\pyquery\pyquery.py
", line 237, in __call__
    result = self.__class__(*args, parent=self, **kwargs)
  File "C:\Python27\lib\site-packages\pyquery-1.2.4-py2.7.egg\pyquery\pyquery.py
", line 213, in __init__
    xpath = self._css_to_xpath(selector)
  File "C:\Python27\lib\site-packages\pyquery-1.2.4-py2.7.egg\pyquery\pyquery.py
", line …
Run Code Online (Sandbox Code Playgroud)

python windows lxml pyquery

3
推荐指数
1
解决办法
1384
查看次数

如何使用pyquery按文本获取元素?

我正在写一个蜘蛛,我想知道哪个链接意味着“下一页”,所以我需要通过值=“下一页”来获取元素,然后获取链接。它不仅仅是包含一个标签,它是一整套html源代码,我想获取具体的链接。

如果我想得到一个像这样的元素

`<a href="http://*****">..</a>`
Run Code Online (Sandbox Code Playgroud)

我可以用

`'a[href^="http"]'`
Run Code Online (Sandbox Code Playgroud)

我尝试

`'a[text="value"]'`
Run Code Online (Sandbox Code Playgroud)

python pyquery

3
推荐指数
1
解决办法
2276
查看次数

Pyquery 抓取类名中有空格的类

我的问题是我必须抓取一个具有以下内容的网站:

<div class="xyz tab"> blah blah </div>
Run Code Online (Sandbox Code Playgroud)

同一网站中的另一个 div 如下:

<div class="xyz">blah blah</div>
Run Code Online (Sandbox Code Playgroud)

要抓取没有空间的网站,我可以使用这个

pyquery('.xyz').text()
Run Code Online (Sandbox Code Playgroud)

但是对于空间我该怎么办???

python web-scraping pyquery

2
推荐指数
1
解决办法
1293
查看次数

停止pyquery插入源HTML中没有任何内容的空格?

我试图使用pyquery 1.2从元素中获取一些文本.显示的文本中没有空格,但pyquery正在插入空格.

这是我的代码:

from pyquery import PyQuery as pq
html = '<h1><span class="highlight" style="background-color:">Randomized</span> and <span class="highlight" style="background-color:">non-randomized</span> <span class="highlight" style="background-color:">patients</span> in <span class="highlight" style="background-color:">clinical</span> <span class="highlight" style="background-color:">trials</span>: <span class="highlight" style="background-color:">experiences</span> with <span class="highlight" style="background-color:">comprehensive</span> <span class="highlight" style="background-color:">cohort</span> <span class="highlight" style="background-color:">studies</span>.</h1>'
doc = pq(html)
print doc('h1').text()
Run Code Online (Sandbox Code Playgroud)

这会产生(注意冒号和句号前的空格):

Randomized and non-randomized patients in clinical trials : 
experiences with comprehensive cohort studies .
Run Code Online (Sandbox Code Playgroud)

如何阻止pyquery在文本中插入空格?

python lxml pyquery

2
推荐指数
1
解决办法
122
查看次数