- import 模块之后是灰色的表明没有被引用过
- lxml找不到的话用anaconda prompt :pip uninstall lxml 重新安装
- 用request时,写的reg无法正确解析网页,先print然后再写reg
- pyquery 的attr()获取不到值,因为只获取第一个值,具体参照https://www.cnblogs.com/airnew/p/10056551.html
访问节点属性:
使用attr()方法访问节点的属性:
from pyquery import PyQuery as pq
li = pq('<li id="test1" class="test1"></li><li id="test2" class="test2"></li>')('li')
print(li.attr("id"))
运行结果:
test1
上面的代码中有两个id不同的li节点,但是attr()方法只取第一个li节点的id属性值,而不取第二个,我们把上面的代码修改下,把第一个li节点的id属性去掉,attr方法是否只取第一个复合条件节点的属性值:
from pyquery import PyQuery as pq
li = pq('<li class="test1"></li><li id="test2" class="test2"></li>')('li')
print(li.attr("id"))
运行结果:
None
第一个li节点没有id属性,因此返回结果为None,所以可见,attr()方法返回的是第一个节点的属性值。
那要取多个li节点的属性值,要怎么做呢?这就要结合items()方法来实现。items()方法是返回的节点的生成器generator object PyQuery.items
:
from pyquery import PyQuery as pq
li = pq('<li id="test1" class="test1"></li><li id="test2" class="test2"></li>')('li')
print(li.items())
for item in li.items():
print(item.attr("id"))
运行结果:
<generator object PyQuery.items at 0x0000027F26082728>
test1
test2
https://scrapingclub.com/ 用scrapy解决10道题