Dryscrape: очистить данные дочерних узлов из списка родительских узлов с помощью xpath
Я пытался очистить http://quotes.toscrape.com/ используя dryscrape и python для целей обучения. Я смог получить все div с class="quote". Хотелось бы перебрать список div с помощью class = "quote" и получить несколько данных из этого родительского элемента, используя xpath.
import dryscrape
from bs4 import BeautifulSoup
session = dryscrape.Session()
url = 'http://quotes.toscrape.com/'
print 'Visiting the URL...'
session.visit(url)
print 'Status: ', session.status_code()
for div in session.xpath("//div[@class='quote']"):
# please help me to scrape author and quote for each div elements
2 ответа
Решение
Мы можем проходить через каждый элемент xpath, и это будут объекты, имеющие содержимое отдельных элементов. Каждый объект будет иметь методы для получения данных.
import dryscrape
session = dryscrape.Session()
url = 'http://quotes.toscrape.com/'
print 'Visiting the URL...'
session.visit(url)
print 'Status: ', session.status_code()
for div in session.xpath("//div[@class='quote']"):
print "Quote: ", div.at_xpath(".//span").text()
print "Author: ", div.at_xpath(".//small").text()
import requests
from bs4 import BeautifulSoup
url = 'http://quotes.toscrape.com/'
r = requests.get(url)
soup = BeautifulSoup(r.text)
for div in soup.findAll("div", {"class": "quote"}):
print('Quote : ' + div.find('span').get_text())
print('Author : ' + div.find('small').get_text())