amazon从beauthulsoup抓取和使用眉毛不同

2024-04-25 14:02:40 发布

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

我试图从亚马逊网站在

现在,对于相同的关键字,amazon返回一个结果列表,显示在<ul>标记中。在

每个<li>标记在结果中都包含一个产品。在

当你从浏览器中进行关键字搜索时,你会得到一个列表,比如说15个结果,其中最后2个或3个是该列表中产品的“赞助”广告。在

但是,使用beauthoulsoup从python执行相同的操作时,我只得到<li>s,它们不是“赞助”广告

我把整个汤打印在一个文件中,并仔细搜索,以确保没有丢失标签。在

下面是运行bs4的python代码(您不会发现它对识别问题很有帮助,我很确定它与amazon有关)

def get_asins_in_page(soup, sponsored):
    asins_dict = {}
    asins_sponsored_dict = {}
    reslist = soup.find("ul", {"id": "s-results-list-atf"})
    for r in reslist.find_all('li'):
        asins_dict[r.get('data-asin')] = r.get('id')
    return asins_dict

def find_ranking_by_asin(keyword, target_asin, sponsored):
    print "%s %s"%(keyword, target_asin)
    loop_count = 0
    url = "http://www.amazon.com/s/?url=search-alias%3Daps&field-keywords="+urllib.quote(keyword)
    while True:
        loop_count+=1
        r = requests.get(url)
        data = r.text
        soup = BeautifulSoup(data)
        url ="http://www.amazon.com" + soup.find("a",{"id":"pagnNextLink"}).get('href') #next_page_url 
        asins_dict = get_asins_in_page(soup, False)
        if target_asin in asins_dict:
            return asins_dict[target_asin].replace("result_","")    
        #fail-safe:
        if loop_count > 50:
            return -1

我来自数据科学背景,所以我不是一个很好的web开发人员。可能是我遗漏了一些东西告诉亚马逊我来自某种网络浏览器!在

编辑: 我在请求中添加了标题,但仍然没有成功。在

以下是修改后的带有头的代码(我尝试删除cookie并保留所有内容,无所谓):

^{pr2}$

Tags: inidurltargetamazon列表getpage