Po prawej kliknięcie (kopia, kopia XPath) w danej dziedzinie, którą chcesz (w Inspektorze Chrome), można uzyskać coś takiego:
//*[@id="specialID"]/div[12]/div[2]/h4/text()[1]
Jeśli chciał ten element tekstowy dla każdego „specialID”
//*[@id="specialID"]/div/div[2]/h4/text()[1]
można wybrać kolejne pole i będzie ona przeplatają wyniki
//*[@id="specialID"]/div/div[2]/h4/text()[1] | //*[@id="specialID"]/div/some/weird/path[95]
Przykład mogłoby być lepsze, ale to ilustruje punkt:
//*[@id="mw-content-text"]/div/ul[1]/li[11]/text()
from lxml import html
import requests
page = requests.get('https://en.wikipedia.org/wiki/Web_scraping')
tree = html.fromstring(page.content)
data = tree.xpath('//*[@id="mw-content-text"]/div/ul[1]/li/a/text() | //*[@id="mw-content-text"]/div/ul[1]/li/text()[1]')
print(len(data))
for i in range(len(data)):
print(data[i])
Dzięki. Tego właśnie szukałem. –
Pamiętaj, że ma opcjonalny parametr 'encode' używaj w następujący sposób:' etree.tostring (xxxxx, encoding = 'unicode') ' – shellbye
To jest * zewnętrzny * HTML. –