我试着从Steam游戏中抓取所有的评论,但是Steam有无限滚动,直到它达到一个特定的评论数量,然后有一个加载更多内容的按钮。我该如何用Scrapy导航呢?
我的代码:
i = 1
url_ = 'https://steamcommunity.com/app/1506830/homecontent/?userreviewscursor=AoIIPwYYan/HzbUD&userreviewsoffset={}0&p={}&workshopitemspage={}&readytouseitemspage={}&mtxitemspage={}&itemspage={}&screenshotspage={}&videospage={}&artpage={}&allguidepage={}&webguidepage={}&integratedguidepage={}&discussionspage={}&numperpage=10&browsefilter=trendweek&browsefilter=trendweek&l=english&appHubSubSection=10&filterLanguage=default&searchText=&maxInappropriateScore=50&forceanon=1'
# url_ is url gathered from inspecting Network while scrolling
class ReviewSpider(scrapy.Spider):
name = 'steam_test'
allowed_domains = ['store.steampowered.com']
start_urls = ['https://steamcommunity.com/app/1517290/reviews/']
def start_requests(self):
yield Request(url, callback=self.parse)
def parse(self, response):
page = get_page(response)
product_id = get_product_id(response)
# Load all reviews on current page.
reviews = response.css('div.apphub_CardContentMain')
for review in (reviews):
yield{
"text":review.css('div.apphub_CardTextContent::text').get(),
"Recommend": review.css('div.title::text').get(),
"date": review.css('div.date_posted::text').get()
}
无法使用的分页区段:
if response.status == 200:
global i
i+= 1
SteamFifaSpider.start_urls = url_.format(i,i,i,i,i,i,i,i,i,i,i,i,i)
如何修复Steam的无限卷轴?
1条答案
按热度按时间gj3fmq9x1#
我尝试使用范围函数的循环和许多使用API URL的方法进行分页,但没有工作。如果你向下滚动,每次都会产生新的请求URL数据,只有下面的方法我才能抓取正确的数据。你可以添加更多的请求URL,无论你需要从API响应列表内。
另一种分页方式