从表中提取<b>文本

时间:2018-11-12 00:04:28

标签: python web-scraping

您好,我在亚马逊上提取一本书的畅销书排名的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>自助',

1 个答案:

答案 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)