我试图从亚马逊网站在
现在,对于相同的关键字,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}$
目前没有回答
相关问题 更多 >
编程相关推荐