【发布时间】:2023-03-12 19:04:01
【问题描述】:
嗨,我用来提取亚马逊图书畅销书排名的 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 in Books(参见 Books 前 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 { 边距:0;填充:0;列表样式类型:无; }\n' '.zg_hrsr_item { 边距:0 0 0 10px; }\n' '.zg_hrsr_rank { 显示:内联块;宽度:80px;文本对齐:' '正确的; }\n' '\n' '\n' '\n' '\n' '#4774\n' ' in\xa0Books > 健康、健身与节食 > 心理健康 > ' '幸福\n' '\n' '\n' '#55298\n' '在\xa0Books > 自助',
【问题讨论】:
-
你用什么来执行 XPath?
-
能否请您包含使用此
//li[@...代码的脚本部分 -
包含更完整的脚本,谢谢。
标签: python web-scraping