以学习啦为例,说明如何选择一个大范围标签下面的两个及以上种类标签tag。
例如
div
p 1 /p
h2 2 /h2
p 3 /p
/div
只有同时可以选择p, h2,内容1,2,3的顺序才不会乱。
from lxml import etree
import requests
from requests.exceptions import HTTPError
import re
import os
def get_xuexila(url):
try:
res = requests.get(url)
res.raise_for_status()
res.encoding = 'UTF-8'
tree = etree.HTML(res.text)
ps = tree.xpath('//*[@id="contentText"]/p|//*[@id="contentText"]/h2')
for onep in ps:
print(onep.text)
except HTTPError:
print("HTTP Error!")
if __name__ == '__main__':
url = input('输入学习啦url')
get_xuexila(url)
print('Done')
这里,关键点在于 whole path a | whole path b,而不是最后的p|h2,后面xpath 2.0或者可以支持。