【问题标题】:Python/HTML How to scrape webpage content without cookie advisor?Python/HTML 如何在没有 cookie 顾问的情况下抓取网页内容?
【发布时间】:2015-11-28 02:18:31
【问题描述】:

我正在尝试使用 Python 抓取网页的内容,并且能够获取我需要的所有内容,但在返回的 HTML 中还有 cookie 顾问。我想删除它,但我不知道如何从 XPath 查询或 HTML 内容中排除它。在这里,您可以在页面页脚找到顾问。 Webpage here

#!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()

【问题讨论】:

  • 什么是cookie advisor?,你用什么来抓取,你用什么解析?
  • 它类似于窗口警报,在意大利,每个网站都必须向正在使用 cookie 的用户提供此信息,因此您必须在每次“第一次”时接受或拒绝此信息对象您访问该网站。对于抓取,我使用带有 etree 和 json 的 lxml 来创建对象。
  • 请出示您目前拥有的代码
  • 也许使用import cookiejar并将其传递给urllib2构造函数,然后调用设置I-saw-the-message cookie的url?
  • @Poggio 你为什么使用 cgi 模块?这段代码你根本没有为我运行

标签: javascript python html cookies


【解决方案1】:

对于您指定的页面,cookie 顾问存在于 divid=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)

【讨论】:

  • 该死!这太容易了,非常感谢。您的代码有效,我正在搜索指定的 div,但我不知道为什么我无法找到它。
猜你喜欢
  • 2011-02-26
  • 2020-04-29
  • 2017-06-20
  • 1970-01-01
  • 2017-11-25
  • 2016-07-07
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
相关资源
最近更新 更多