您好,我在亚马逊上提取一本书的畅销书排名的python代码是:
from lxml import html
import requests
from time import sleep
def parse(url):
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36'}
page = requests.get(url,headers=headers)
for i in range(20):
sleep(3)
try:
doc = html.fromstring(page.content)
XPATH_BSR = '//li[@id="SalesRank"]//text()'
以本书为例:https://www.amazon.com/dp/0965437221
我只想要最畅销的电话号码590345,但我的输出却是一团糟:
谢谢。
{'BSR':'亚马逊畅销书排名:\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '#590,345书籍(请参阅书籍前100名)\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '\ n' '.zg_hrsr {margin:0;填充:0; list-style-type:无; } \ n' '.zg_hrsr_item {margin:0 0 0 10px; } \ n' '.zg_hrsr_rank {display:inline-block;宽度:80px;文字对齐:“ '对; } \ n' '\ n' '\ n' '\ n' '\ n' '#4774 \ n' in \ xa0Books>健康,健身与节食>心理健康>' “幸福\ n” '\ n' '\ n' '#55298 \ n' 'in \ xa0Books>自助',
答案 0 :(得分:1)
由于我不知道您正在使用哪个库或任何东西。我将为您提供使用request-html库的解决方案。
from requests_html import HTMLSession
session = HTMLSession()
page = session.get('https://www.amazon.com/dp/0965437221')
rank = page.html.find("#SalesRank").text.split('#')[1].split()[0]
print(rank)
以其他方式,假设您上面的输出是字符串,则将直接提取等级,如下所示:
rank = your_output.split('#')[1].split()[0]
print(rank)