【问题标题】:store html in python在python中存储html
【发布时间】:2015-01-04 19:12:08
【问题描述】:

我同时使用 xpath 和 beautifulsoup 来抓取网页。 Xpath 需要树作为输入,beautifulsoup 需要汤作为输入。 这是获取树和汤的代码:

def get_tree(url):
    r = requests.get(url)
    tree = html.fromstring(r.content)
    return tree

# get soup
def get_soup(url):
    r = requests.get(url)
    data = r.text
    soup = BeautifulSoup(data)
    return soup

这两种方法都使用 requests.get(url)。这就是我想要存储的内容。 这是python中的代码:

import requests
url = "http://www.nytimes.com/roomfordebate/2013/10/28/should-you-bribe-your-kids"
r = requests.get(url)
f = open('html','wb')
f.write(r)

然后我得到这样的错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: must be convertible to a buffer, not Response

这是存储文本的代码,但出现错误:

import requests
from lxml import html
url = "http://www.nytimes.com/roomfordebate/2013/02/13/when-divorce-is-a-family-affair"
r = requests.get(url)
c = r.content
outfile = open("html", "wb")
outfile.write(c)
outfile.close()
infile = open("html", "rb")
tree = html.fromstring(infile)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/lxml/html/__init__.py", line 662, in fromstring
    start = html[:10].lstrip().lower()
TypeError: 'file' object has no attribute '__getitem__'

我该如何解决这个问题?

【问题讨论】:

    标签: python html beautifulsoup lxml lxml.html


    【解决方案1】:
    infile = open("html", "rb") #this is a file object Not a string
    

    你需要先用read()阅读它,而不仅仅是打开:-)-

    infile = open("html", "rb")
    infile=infile.read()
    tree = html.fromstring(infile)
    

    【讨论】:

      【解决方案2】:

      requests.get 返回一个响应对象。

      我猜作者想要文字。你想要的是响应的内容,也是文本。

      r = requests.get(url).content
      

      【讨论】:

      • 谢谢。加载内容时仍然出现错误。查看更新帖子。
      【解决方案3】:

      fromstring() 需要一个字符串作为输入。既然有文件,就需要使用parse()

      >>> tree = html.parse(infile)
      >>> tree.findtext('//title')
      When Divorce Is a Family Affair - Room for Debate - NYTimes.com
      

      【讨论】:

        猜你喜欢
        • 2015-01-24
        • 2023-03-13
        • 1970-01-01
        • 2011-08-11
        • 2012-01-27
        • 1970-01-01
        • 1970-01-01
        • 2019-12-16
        • 2017-09-02
        相关资源
        最近更新 更多