2015-09-02 1 views
1

Я пытаюсь очистить содержимое веб-страницы с помощью Python, и я могу получить каждый контент, который мне нужен, но в возвращенном HTML есть советник cookie. Я хочу удалить его, но я не знаю, как его исключить из запроса XPath или содержимого HTML. Здесь вы можете найти советника в нижнем колонтитуле страницы. Webpage herePython/HTML Как очистить содержимое веб-страницы без советника cookie?

#!C:/Python27/python 
from lxml import etree 
import requests 
import cgi 

fs = cgi.FieldStorage() 
q =fs.getfirst ("URL") 

page = requests.get(q) 

if q.find("http://www.dlib.org") != -1: 
    tree = etree.HTML(page.text) 
    element = tree.xpath('./body/form/table[3]/tr/td/table[5]') 
else: 
    p = etree.XMLParser(remove_blank_text=True, resolve_entities=False) 
    tree = etree.fromstring(page.content, p) 
    element = tree.xpath('.//*[@id="content"]') 

content = etree.tostring(element[0]) 

print "Content-type: text\n\n" 
print content.strip() 
+1

что советник печенья ?, что вы используете, чтобы скоблить, что вы используете разбор? – taesu

+0

это похоже на предупреждение окна, в Италии обязательно для каждого веб-сайта, чтобы предоставить эту информацию пользователям, что они используют файлы cookie, поэтому вы должны принять или отклонить этот информационный объект за каждое «первое» время посещения веб-сайта. Для соскабливания я использую lxml с etree и json для создания объектов. – Poggio

+0

Пожалуйста, покажите код, который у вас есть – heinst

ответ

1

Для страницы вы указали, советник печенье существует в div с id=cookiesAlert. Вы можете использовать lxml.xpath() для поиска этого div и удалить его, так как:

if q.find("http://www.dlib.org") != -1: 
    tree = etree.HTML(page.text) 
    element = tree.xpath('./body/form/table[3]/tr/td/table[5]') 
else: 
    p = etree.XMLParser(remove_blank_text=True, resolve_entities=False) 
    tree = etree.fromstring(page.content, p) 
    element = tree.xpath('.//*[@id="content"]') 
    cookies_alert = element[0].xpath('.//*[@id="cookiesAlert"]') 
    for ca in cookies_alert: 
     ca.getparent().remove(ca) 
+0

Черт! Это было так просто, спасибо вам большое. Ваш код работает, я искал этот указанный div, но я не знаю, почему я не смог его найти. – Poggio

Смежные вопросы