美丽的汤有时工作

时间:2015-11-02 02:15:45

标签: python beautifulsoup

这里我有一个非常简单的刮刀,用于llbean

上项目的名称
import urllib2
from bs4 import BeautifulSoup

def mainTest():
    url = "http://www.llbean.com/llb/shop/43281?feat=506697-GN2&page=women-s-l-l-bean-boots-10-shearling-lined&attrValue_0=Brown/Brown&productId=732934"
    page=urllib2.urlopen(url)
    soup = BeautifulSoup(page.read(), "html5lib")
    name = soup.find('h1', attrs={'itemprop':'name'}).text
    print name
    print str(soup)[:100]

mainTest()

这种刮刀通常有效。它通常打印我想要的东西:

                                Women's Bean Boots® by L.L.Bean, 10" Shearling-Lined

<!DOCTYPE html>
<html class="no-js" lang="en"><head>
        <meta charset="utf-8"/>
        <meta c

但有时打印:

None
<html><head></head><body></body></html>

这是一个非常难以重复的错误,我很抱歉。我相信问题可能在于llbean有时比我的刮刀加载更快,有时我的刮刀首先刮​​。

有没有人知道如何放慢我的刮刀速度?

这也可能是一个完全不同的问题。

2 个答案:

答案 0 :(得分:0)

对我来说,代码正在运行 - 关注编码。我成功尝试了10次以上。

import urllib2
from bs4 import BeautifulSoup

def mainTest():
    url = "http://www.llbean.com/llb/shop/43281?feat=506697-GN2&page=women-s-l-l-bean-boots-10-shearling-lined&attrValue_0=Brown/Brown&productId=732934"
    page=urllib2.urlopen(url)
    page=page.read()
    soup = BeautifulSoup(page, "html5lib")
    name = soup.find('h1', attrs={'itemprop':'name'}).text.encode('utf-8')
    print name
    print unicode(soup)[:100]

mainTest()

打印 -

                                Women's Bean Boots® by L.L.Bean, 10" Shearling-Lined

<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8"/>
<meta content="IE=edge

答案 1 :(得分:0)

从youtube抓取一些django webapp电影列表的嵌入式URL时,我遇到了同样的问题。 我不知道是我的互联网连接速度慢还是什么原因,我的汤有时会找到该元素,有时它只会返回None, 当我在刮取该元素时得到None类型时发出另一个请求解决了我的问题...。

我的解决方法...

while(1):
        try:
            try to scrape your element using BeautifulSoup
        except AttributeError:
            print('retrying....')
        else:
            break

如果您的循环中断,则您获得了元素,如果您从汤中获得了None类型,它将转到except并重试(即,再次循环while循环),然后,如果汤在第二个请求中找到了该元素,如果您遇到无限循环,很明显您正在访问的元素不存在, 您还可以限制while循环,例如最多10个重试请求...