Артефакт анализа веб-страниц поисковым роботом Python Xpath, быстрое обучение! ! !

задняя часть Python
Артефакт анализа веб-страниц поисковым роботом Python Xpath, быстрое обучение! ! !

Мало знаний, большой вызов! Эта статья участвует в "  Необходимые знания для программистов  «Творческая деятельность

Эта статья также участвует "Проект "Звезда раскопок""  , чтобы выиграть творческие подарочные пакеты и бросить вызов творческим поощрениям

Код Пипи Креветка Глупый и забавный мальчик, который любит слушать песни и игры, как и большинство его друзей. Конечно, он также проявляет интерес к письму. Эмм..., дни еще длинные, давайте усердно работать вместе.🌈

Если вы считаете, что текст хороший, пожалуйста, подпишитесь на него 😉


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 на самом деле не сложен. Вам нужно больше практиковаться и вести настоящий бой. Таким образом, вы освоите его очень быстро. Вы можете обратиться к указателю учебника по поисковым роботам ниже. прочитайте это.


💖Наконец

яКод Пипи Креветка, любитель креветок Пеппи, который любит делиться знаниями, в ближайшие дни продолжит обновлять посты в блоге, полезные для всех, и с нетерпением жду вашего внимания! ! !

Это не легко создать. Если этот пост в блоге полезен для вас, я надеюсь, что вы можете сделать три последовательных ссылки одним щелчком мыши! , спасибо за вашу поддержку, увидимся в следующий раз~~~


一键三连.png