当前位置: 首页 > news >正文

哪有做网站的定单北京谷歌优化

哪有做网站的定单,北京谷歌优化,安庆做网站电话,无线网网址是什么三、pyquery的使用 1、准备工作 pip3 install pyquery2、初始化 2.1、字符串初始化 把HTML的内容当做参数&#xff0c;来初始化PyQuery对象。 html <div><ul><li class"item-0">first item</li><li class"item-1">&l…

三、pyquery的使用

1、准备工作

pip3 install pyquery

2、初始化

2.1、字符串初始化

把HTML的内容当做参数,来初始化PyQuery对象。

html = '''
<div><ul><li class="item-0">first item</li><li class="item-1"><a href="link2.html">second item</a></li><li class="item-0 active"><a href="link3.html"><span class="bold>third item</span></a></li><li class="item-0 active"><a href="link4.html">fourth item</a></li><li class="item-0"><a href="link5.html">fifth item</a></li></ul>
</div>
'''
from pyquery import PyQuery as pq
doc = pq(html)		# 将HTML作参数传给pq,完成初始化
print(doc('li'))

2.2、URL初始化

指定PyQuery对象的参数为url

from pyquery import PyQuery as pq
doc = pq(url='https://cuiqingcai.com')	
print(doc('title'))# 和以下代码功能相同
doc = pq(requests.get('https://cuiqingcai.com').text)
print(doc('title'))

2.3、文件初始化

from pyquery import PyQuery as pq
doc = pq(filename='demo.html')
print(doc('title'))

3、基本CSS选择器

html = '''
<div id="container"><ul class="list"><li class="item-0">first item</li><li class="item-1"><a href="link2.html">second item</a></li><li class="item-0 active"><a href="link3.html"><span class="bold>third item</span></a></li><li class="item-0 active"><a href="link4.html">fourth item</a></li><li class="item-0"><a href="link5.html">fifth item</a></li></ul>
</div>
'''
from pyquery import PyQuery as pq
doc = pq(html)
print(doc('#container .list li'))		# 选取id为container的节点,再选取其内部class为list的节点内部的所有li节点
print(type(doc('#container .list li')))	#PyQuery类型for item in doc('#container .list li').items():	# 遍历输出print(item.text())

4、查找节点

4.1、子节点

查找子节点时,需要用到find方法,其参数是CSS选择器。

items = doc('.list')		# 选取class为list的节点
print(type(items))
print(items)
lis = items.find('li')		# 选取其内部的li节点
print(type(lis))			# PyQuery类型
print(lis)

如果要筛选所有子节点中符合条件的节点,可向children方法传入CSS选择器

lis = items.children()
lis = items.children('.active')

4.2、父节点

可以用parent方法获取某个节点的父节点

container = items.parent()
print(type(container))			# 类型还是PyQuery
print(container)

可以用parents方法获取某个节点的祖先节点。

parents = items.parents()
print(type(parents))			# 类型还是PyQuery
print(container)

可传入参数筛选祖先节点

parent = items.parents('.wrap')
print(parent)

4.3、兄弟节点

li = doc('.list .item-0.active')
print(li.siblings())

5、遍历节点

  • pyquery 的选择结果可能是多个节点,也可能是单个节点,类型都是PyQuery类型,并没有像Beautiful Soup那样返回列表。

  • 如果结果是单个节点,既可以直接打印输出,也可以直接转成字符

    doc  = pq(html)
    li = doc('.item-0.active')
    print(li)
    print(str(li))
  • 如果是多个节点,就需要遍历获取了。需要调用items方法

    doc  = pq(html)
    lis = doc('li').items()
    print(type(lis))
    for li in lis:print(li,type(li))

5.1、获取信息

比较重要的信息有两类,一是属性、二是文本。

5.1.1、获取属性

提取到某个PyQuery类型的节点后,可以调用attr方法获取其属性

doc = pq(html)
a = doc('.item-0.active a')
print(a,type(a))
print(a.attr('href')) / print(a.attr.href)
  • 当返回结果包含多个节点时,调用attr方法,只会得到第一个节点的属性。
  • 如果要获取所有的,则需要遍历
from PyQuery import PyQuery as pq
doc = pq(html)
a = doc('a')
for item in a.items():print(items.attr('href'))
5.1.2、获取文本

获取节点内部的文本,可以调用text方法

from pyquery import PyQuery as pq
html = '''
<div class="wrap"><div id="container"><ul class="list"><li class="item-0">first item</li><li class="item-1"><a href="link2.html">second item</a></li><li class="item-0 active"><a href="link3.html"><span class="bold>third item</span></a></li><li class="item-1 active"><a href="link4.html">fourth item</a></li><li class="item-0"><a href="link5.html">fifth item</a></li></ul></div>
</div>
'''doc = pq(html)
a = doc('.item-0.active a')
print(a)
print(a.text())
  • 这里首先选中a节点,然后调用text方法,就可以获取其内部的文本信息。此时text方法会忽略节点内部包含的所有HTML,只返回纯文字内容。
  • html方法会得到节点内部的HTML文本。
  • 如果得到的是多个节点,并且想获取所有节点的内部HTML文本,就要遍历这些节点。而text方法不需要遍历即可得到,会对所有节点取文本之后合成一个字符串。

6、节点操作

pyquery库提供了一些列方法对节点进行动态修改,例如为某个节点添加一个class,移除某个节点等。

6.1、add_class和remove_class

html = '''
<li class="item-0 active"><a href="link3.html"><span class="bold>third item</span></a></li>
'''
doc = pq(html)
li = doc('.item-0.active')
li.remove_class('active')
li.add_class('active')

6.2、attr、text和html

doc = pq(html)
li = doc('.item-0.active')
li.attr('name','link')
li.text('changed item')
li.html('<span>changed item</span>')
  • attr方法第一个参数为属性名,第二个参数为属性值。若值传入一个参数,表示获取这个属性值。
  • 调用text方法和html方法改变li节点内部的内容。如果传入参数则表示赋值。

6.4、remove

html = '''
<div class="wrap">Hello, World<p>This is a paragraph.</p>
</div>
'''
doc = pq(html)
wrap = doc('.wrap')
wrap.find('p').remove()
print(wrap.text())# 首先选中p节点,然后调用remove方法将其移除,这时wrap内部就只剩下Hello World这句话了,再利用text方法提取即可。

7、伪类选择器

li = doc('li:first-child')      # 选择了第一个li节点
li = doc('li:last-child')       # 选择了最后一个li节点
li = doc('li:nth-child(2)')		# 第二个li节点
li = doc('li:gt(2)')			# 第三个之后的li节点
li = doc('li:nth-child(2n)')	# 偶数位置的li节点
li = doc('li:contains(second)') # 包含second文本的li节点

查看更多:http://pyquery.readthedocs.ip

四、parsel的使用

1、介绍

parsel库可以解析HTML和XML,并支持使用XPath和CSS选择器对内容进行提取和修改,同时还融合了正则表达式的提取功能。主流!!

2、准备工作

 pip3 install parsel 

3、初始化

html = '''
<div><ul><li class="item-0">first item</li><li class="item-1"><a href="link2.html">second item</a></li><li class="item-0 active"><a href="link3.html"><span class="bold>third item</span></a></li><li class="item-1 active"><a href="link4.html">fourth item</a></li><li class="item-0"><a href="link5.html">fifth item</a></li></ul>
</div>
'''from parsel import Selector
selector = Selector(text=html)      # 创建了一个Selector对象,传入text参数
items = selector.css('.item-0')
print(len(items),type(items),items)items2 = selector.xpath('//li[contains(@class,"item-0")]')
print(len(items2),type(items2),items2)
  • 两个结果都是SelectorList对象,这其实是一个可迭代对象
  • len方法获取了结果的长度。
  • 每个节点还是以Selector对象的形式返回,其中每个Selector对象的data属性里包含对应提取节点的HTML代码。

4、提取文本

对上述可迭代对象SelectorList,要获取所有li节点的文本内容,就需要遍历了。

items = selector.css('.item-0')
for item in items:text = item.xpath('.//text()').get()print(text)
result = selector.xpath('//li[contains(@class,"item-0")]//text()').get()
# 这里使用//li[contains(@class,"item-0")]//text()选取了所有class包含item-0的li节点的文本内容。这里get只提取了第一个Selector对象的结果
result = selector.xpath('//li[contains(@class,"item-0")]//text()').getall()
# 使用getall则会提取所有
# css写法:
result = selector.css('.item-0 *::text').getall

5、提取属性

# 例如提取第三个li节点的href属性
result = selector.css('.item-0.active a::attr(href)').get()
result = selector.xpath('//li[contains(@class,"item-0") and contains(@class,"active")]/a/@href').get()
  • 对于CSS选择器,选取属性需要加**::attr(),并传入对应的属性名称**才可选取;
  • 对于XPath,直接用**/@再加属性名称**即可选取。

6、正则提取

result = selector.css('.item-0').re('link.*')
# 先用css方法提取所有class包含item-0的节点,然后使用re方法传入了link.*,用来匹配包含link的所有结果。
  • 当然,如果在调用css方法时,已经提取了进一步的结果,例如提取了节点文本值,那么re方法就只会针对节点文本进行提取:
result = selector.css('.item-0 *::text').re('.*item')
  • 也可用re_first方法来提取第一个符合规则的结果:
result = selector.css('.item-0').re_first('<span class="bold>(.*?)</span>')
http://www.hkea.cn/news/990406/

相关文章:

  • 计算机学了出来干嘛免费优化推广网站的软件
  • 宁波网站建设优化湖南seo优化按天付费
  • 门户网站手机版google官网入口
  • 深圳市工程建设交易服务中心网站软文什么意思
  • 大型网架加工厂成都网站建设方案优化
  • 导航网站的广告怎么做的千锋教育官方网
  • etc网站开发票网站制作软件免费下载
  • 上海seo网站设计2022十大网络营销案例
  • 还有做网站的必要吗网站运营推广方案
  • 企业营销型网站建设厂家品牌搜索引擎服务优化
  • 学校网站建设计划怎么成为百度推广代理商
  • 普陀网站开发培训学校seo快速优化
  • 建一个商城网站多少钱免费的网站推广软件
  • 手机网站解决方案看网站搜什么关键词
  • 顺企网江西网站建设宜昌今日头条新闻
  • 坪山网站建设行业现状网页设计与制作代码成品
  • 网站建设需求文档模板下载学大教育一对一收费价格表
  • 小型网站怎样优化百度首页官网
  • 网站开发与iso9001关系百度上做推广怎么做
  • wordpress怎么设置导航镇江seo
  • 番禺建设网站服务软文写作网站
  • 有哪些专做自然风景图片的网站石首seo排名
  • 移动网站虚拟主机seo 排名 优化
  • 专业网站建设课程网站推广优化方式
  • 适合站长做的网站信息流广告投放工作内容
  • 做健身网站步骤网站建设网络公司
  • 武汉整站seo数据上云网站关键词优化怎么做的
  • 网站尾部网络seo推广
  • 建设一个公司网站需要什么知识网站网络推广优化
  • 政府高度重视网站建设怎么做网络推广