请求不工作,而Urllib2工作

2024-09-28 02:00:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常简单的例子,我认为requests应该毫无问题地替换urllib2。然而,似乎在最简单的情况下,我遗漏了一些东西。有人能告诉我为什么吗?(我正在为我的女朋友获取makeup pricing

from bs4 import BeautifulSoup
myurl = 'http://www.lancome-usa.com/skincare-cleanse/skincare-cleanse,default,sc.html'

# 1. urllib2
import urllib2
r = urllib2.urlopen(myurl)
soup = BeautifulSoup(r)
print 'MOUSSE RADIANCE' in soup.text.encode('utf-8').upper()
print '$32.00' in soup.text.encode('utf-8')

print '------------------------------------------------------'

# 2. requests
import requests
r = requests.get(myurl)
soup = BeautifulSoup(r.text)
print 'MOUSSE RADIANCE' in soup.text.encode('utf-8').upper()
print '$32.00' in soup.text.encode('utf-8')

答复:

True
True
------------------------------------------------------
False
False

最后,我升级了我的requests库,同时,我意识到使用r.text是行不通的。但是使用r.text.encode('utf-8')r.content将构建具有正确内容的汤。你知道吗


Tags: textinimporturllib2requestsutfencodeprint
1条回答
网友
1楼 · 发布于 2024-09-28 02:00:48

您需要升级您的请求版本,您还可以获得"product-name"标记中的所有产品:

import requests
r = requests.get(myurl)
soup = BeautifulSoup(r.content)
products = {x.text.strip().lower() for x in soup.find_all("div",{"class":"product-name"})}

print("mousse radiance" in products)

for p in products:
    print(p)

True

crème radiance
crème douceur
absolue precious pure
mousse radiance
crème mousse confort
eau fraîche douceur
tonique confort
tonique pure focus
gel radiance

我使用的是2.5.3:

In [8]: import requests

In [9]: requests.__version__
Out[9]: '2.5.3'

你可以创建一个产品和价格的目录,这样你的女朋友就可以让你买她的多种产品:

products = [x.text.strip().lower() for x in soup.find_all("div",{"class":"product-name"})]
prices = [x.text for x in soup.find_all("span",{"class":"product-sales-price"})]

items = dict(zip(products,prices))
print(items.get("mousse radiance","N/A"))
print(items)

$32.00
{u'cr\xe8me radiance': u'$25.00 - $37.00', u'cr\xe8me douceur': u'$25.00 - $37.00', u'absolue precious pure': u'$58.00', u'mousse radiance': u'$32.00', u'cr\xe8me mousse confort': u'$25.00', u'eau fra\xeeche douceur': u'$38.00 - $51.00', u'tonique confort': u'$25.00 - $44.00', u'tonique pure focus': u'$25.00', u'gel radiance': u'$25.00'}

相关问题 更多 >

    热门问题