python爬虫(十四)

 
1、获取所有的span标签
from lxml import etree

parser=etree.HTMLParser(encoding='utf-8')
html=etree.parse("tencent.html",parser=parser)

# 1、获取所有的span标签
# //span
# xpath返回的是一个列表
spans=html.xpath("//span")
for span in spans:
    print(etree.tostring(span, encoding='utf-8').decode('utf-8'))
 

2、获取第二个span标签
# 2、获取第二个span标签
# //span[2]

spans=html.xpath("//span[2]")
for span in spans:
    print(etree.tostring(span,encoding='utf-8').decode('utf-8'))

 

3、获得class等于share的span标签
# 3、获得class等于share的span标签
# //span[@class="share"]

spans=html.xpath("//span[@class='share']")
for span in spans:
    print(etree.tostring(span,encoding='utf-8').decode('utf-8'))

结果为列表的形式:

 

 4、获取所有div标签下,id的值

# 4、获取所有div标签下,id的值
# //div/@id
# 因为id的值就是字符串形式,所有就不用tostring了
divs=html.xpath("//div/@id")
for div in divs:
    print(div)

 5、获取html里面的纯文本

# 5、获取html里面的纯文本
# 一般不要第一个span,因为第一个span一般为标题,从第二个span开始,先获取第二个span得纯文本,然后把第二个span里面得数据组装成一个字典,然后把这些字典放入列表

divs=html.xpath("//div[position()>2]")

for div in divs:
    title=div.xpath("//h4[1]//text()")
    address=div.xpath("//span[2]/text()")
    jishu=div.xpath("//span[3]/text()")
    time=div.xpath("//span[4]/text()")
    recruittext=div.xpath("//p[2]/text()")

    position={
        'title':title,
        'address':address,
        'jishu':jishu,
        'time':time,
        'recruittext':recruittext
    }
    print(position)

结果:

 遇到得问题是:所有得题目,所有得地址、时间等都是在一起,如果把他们单独分开。

在学习了BeautifulSoup之后可以解决,学习网址:https://www.cnblogs.com/gaoxy/p/10186329.html

猜你喜欢

转载自www.cnblogs.com/zhaoxinhui/p/12386708.html