我正在使用以下 python 脚本从亚马逊页面抓取信息。
在某些时候,它停止返回页面结果。脚本正在启动,浏览关键字/页面,但我只得到标题作为输出:
关键字排名标题 ASIN 评分评论 Prime 日期
我怀疑问题出在以下行中,因为此标记不再存在并且resultsvar 没有获得任何值:
results = soup.findAll('div', attrs={'class': 's-item-container'})
这是完整的代码:
from bs4 import BeautifulSoup
import time
from selenium import webdriver
import re
import datetime
from collections import deque
import logging
import csv
class AmazonScaper(object):
def __init__(self,keywords, output_file='example.csv',sleep=2):
self.browser = webdriver.Chrome(executable_path='/Users/willcecil/Dropbox/Python/chromedriver') #Add path to your Chromedriver
self.keyword_queue = deque(keywords) #Add the start URL to our list of URLs to crawl
self.output_file = output_file
self.sleep = sleep
self.results = []
def get_page(self, keyword):
try:
self.browser.get('https://www.amazon.co.uk/s/ref=nb_sb_noss_2?url=search-alias%3Daps&field-keywords={a}'.format(a=keyword))
return self.browser.page_source
except Exception as e:
logging.exception(e)
return
def get_soup(self, html):
if html is not None:
soup = BeautifulSoup(html, 'lxml')
return soup
else:
return
输出应该是这样的(为了清晰起见,我已经修剪了标题)。
关键字排名标题 ASIN 评分评论 Prime 日期
Blue+Skateboard 3 Osprey Complete Beginn B00IL1JMF4 3.7 40 Prime 2019 年 2 月 21 日 Blue+Skateboard 4 ENKEEO Complete Mini C B078J9Y1DG 4.5 42 Prime 2019 年 2 月 21 日 Blue+Skateboard 5 skatro-K23S Mini Cruiser10M29X2019 年 2月7 Vinsani 复古巡洋舰 B00CSV72AK 4.4 8 Prime 2019 年 2 月 21 日 Blue+Skateboard 8 Ridge Retro Cruiser Bo B00CA33ISQ 4.1 207 Prime 2019 年 2 月 21 日 Blue+Skateboard 9 Xootz Kids Complete Be B01B206200002 Blue+Skateboard 8 Ridge Retro Cruiser Bo B00CA33ISQ II Skateboa B00MGRGX2Y 4.3 68 Prime 2019 年 2 月 21 日
catspeake
相关分类