Невозможно импортировать данные с использованием HTML Scrapping - PullRequest
0 голосов
/ 12 октября 2018

Итак, я делаю проект на Python, в котором я решил сделать сравнение в супермаркете.Я решил использовать цены на существующем веб-сайте сравнения супермаркетов.

Я использовал этот веб-сайт, чтобы узнать: https://docs.python -guide.org / scenarios / scrape /

Для начала я попытался получить цену на яблоки (в Tesco) с этого сайта:

http://www.mysupermarket.co.uk/tesco-price-comparison/Fruit/Tesco_Gala_Apple_Approx_160g.html

, используя отредактированную версию кода документа:

import requests
from lxml import html
page = requests.get('http://www.mysupermarket.co.uk/tesco-price-comparison/Fruit/Tesco_Gala_Apple_Approx_160g.html')
    tree = html.fromstring(page.content)
    price_tesco = tree.xpath('//*[@id="PriceWrp"]/div[2]/span')
    print(price_tesco)

Я пробовал код xpath для цены, но когда я печатаю цену, она ничего не возвращает (пустой список)

Так как бы это исправить?

Примечание - я новичок в HTML Scraping и имею базовые знания Python, но решил немного усложнить.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 12 октября 2018

, поскольку на странице, отображаемой на JavaScript, используется запросы_html с таким рендерингом, как:

from requests_html import HTMLSession
session = HTMLSession()

r = session.get('http://www.mysupermarket.co.uk/tesco-price- 
comparison/Fruit/Tesco_Gala_Apple_Approx_160g.html')
r.html.render()
price = r.html.xpath('//*[@id="PriceWrp"]/div[2]/span')[0]
print(price.text)
0 голосов
/ 12 октября 2018

Вероятно, этот сайт является динамическим и не позволяет получить полный HTML-файл.В этом случае вы можете использовать библиотеку «селен», немного медленнее, но всегда решающую ваши проблемы.

0 голосов
/ 12 октября 2018

Я не могу просмотреть рассматриваемый сайт (за брандмауэром), но вы должны знать, что многие веб-сайты в настоящее время имеют динамическое содержимое с использованием javascripts и т. Д. И не могут быть должным образом очищены с помощью базовой библиотеки, которую я "Предполагается, что это тот случай, если ваш xpath действительно верен, но ничего не возвращает.

Лучше всего использовать библиотеку, которая может отображать и очищать динамический контент такого типа, например, selenium или Запросы-HTML (мои предпочтения, поскольку он безголовый).

...