Мало знаний, большой вызов! Эта статья участвует в " Необходимые знания для программистов «Творческая деятельность
Эта статья также участвует "Проект "Звезда раскопок"" , чтобы выиграть творческие подарочные пакеты и бросить вызов творческим поощрениям
Код Пипи Креветка Глупый и забавный мальчик, который любит слушать песни и игры, как и большинство его друзей. Конечно, он также проявляет интерес к письму. Эмм..., дни еще длинные, давайте усердно работать вместе.🌈
Если вы считаете, что текст хороший, пожалуйста, подпишитесь на него 😉
1. Введение в Xpath
XPath — это язык для поиска информации в XML-документах. XPath можно использовать для обхода элементов и атрибутов в XML-документе.
2, выражение пути Xpath
выражение | описывать |
---|---|
nodename | Выбирает все дочерние узлы этого узла. |
/ | Выберите из корневого узла. |
// | Выбирает узлы в документе из текущего узла, который соответствует выбору, независимо от их положения. |
. | выбрать текущий узел |
.. | Выберите родительский узел текущего узла |
@ | выбрать свойства |
3. Объясните примерами
Здесь я использую интерфейс Baidu, чтобы объяснить вам
==Пример==: Я хочу получить горячий список Baidu на картинке, откройте консоль, мы можем найти его непосредственно в соответствии со значением класса тега div (здесь мы обычно чаще используем синтаксис xpath)
from lxml import etree
import requests
headers = {
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
}
url = "https://www.baidu.com/"
response = requests.get(url=url,headers=headers)
#使用etree进行解析
data = etree.HTML(response.text)
#可参考上表格进行对比,//div可理解为任意路径下的一个div标签,@class表示选取class属性,text()表示获取text文本
name = data.xpath("//div[@class='title-text c-font-medium c-color-t']/text()")
print(name[0])
==Пример==: Я хочу получить информацию из списка быстрого доступа. Обратитесь к рисунку ниже, чтобы увидеть, что все они находятся под тегом ul, а каждая информация относится к тегу li.
data = etree.HTML(response.text)
#//ul表示任意路径下的ul标签,
#表示获取ul下的所有li标签
ul = data.xpath("//ul[@class='s-hotsearch-content']/li")
#当然,大家在爬取过程中可能会遇到没有class属性的标签,这时可使用id定位,又或者定位其父标签,再往下找
#ul = data.xpath("//ul[@id='hotsearch-content-wrapper']/li")
#遍历
for li in ul:
# .//span表示当前节点下的任意span标签,我们再根据class值定位,使用text()获取文本信息
name = li.xpath(".//span[@class='title-content-title']/text()")
print(name[0])
==Пример==: Найдите горячий список Baidu, чтобы найти его родительский узел, который является атрибутом href тега a
data = etree.HTML(response.text)
#..表示其父节点
url = data.xpath("//div[@class='title-text c-font-medium c-color-t']/../@href")
print(url[0])
Синтаксис Xpath на самом деле не сложен. Вам нужно больше практиковаться и вести настоящий бой. Таким образом, вы освоите его очень быстро. Вы можете обратиться к указателю учебника по поисковым роботам ниже. прочитайте это.
💖Наконец
яКод Пипи Креветка, любитель креветок Пеппи, который любит делиться знаниями, в ближайшие дни продолжит обновлять посты в блоге, полезные для всех, и с нетерпением жду вашего внимания! ! !
Это не легко создать. Если этот пост в блоге полезен для вас, я надеюсь, что вы можете сделать три последовательных ссылки одним щелчком мыши! , спасибо за вашу поддержку, увидимся в следующий раз~~~