resp = requests.get((f"https://store.steampowered.com/appreviews/{appid}?cursor={nextCursor}&language=schinese&day_range=365&review_type=all&purchase_type=all&filter=recent"),timeout=5).json()
except Exception as e:
print(f"request failed:请求评论失败,尝试重新拉取...{reloadDataNum}")
resp = ""
isEnd = True
reloadDataNum = reloadDataNum + 1
time.sleep(1)
if isEnd :
return isEnd
reloadDataNum = 0 #reset
print(f"request completed , data list len ={len(listAllContent)}")
if lastedNum == len(listAllContent):
totalEndNum = totalEndNum + 1
print(f"request failed:请求不到更多评论...{totalEndNum}")
if totalEndNum >= reloadDataNumMax :
print(f"结束请求...")
isEnd = True
reloadDataNum = 5
time.sleep(1)
return isEnd
else:
lastedNum = len(listAllContent)
totalEndNum = 0
cursor = resp["cursor"]
cursor = cursor.replace("+","%2B")
nextCursor = cursor
html = resp["html"] #本页评论数据
soup= BeautifulSoup(html,"lxml")
#请求成功
#解析 用户名
listName = []
listRecommend = []
listTime = []
listComment = []
for business in soup.find_all('div', class_="persona_name"):
for bb in business.find_all('a') :
listName.append(bb.string)
#解析 是否推荐
for business in soup.find_all('div', class_="title ellipsis"):
listRecommend.append(business.string)
#解析 游戏时长
for business in soup.find_all('div', class_="hours ellipsis"):
text1 = business.text.replace("\r\n\t\t\t\t\t\t","")
text2 = text1.replace("\t\t\t\t\t\t\t\t\t\t\t","")
listTime.append(text2)
#解析 游戏评论
for business in soup.find_all('div', class_="content"):
text1 = business.text.replace("\r\n\t\t\t\t\t","")
text2 = text1.replace("\t\t\t\t\t\n","")
listComment.append(text2)
# all data
for number in range(0,len(listComment)) :
list1 = []
list1.append(listName[number])
list1.append(listRecommend[number])
list1.append(listTime[number])
list1.append(listComment[number])
listAllContent.append(list1)
return isEnd
URL解析
请求的URL格式:https://store.steampowered.com/appreviews/{appid}?cursor={nextCursor}&language=schinese&day_range=365&review_type=all&purchase_type=all&filter=recent
appid:应用ID
nextCursor:用来索引下一页评论的下标,初始值等于*,下一页的值从请求的页面中可以拿到,这个值的键为"cursor"。
因此通过这个URL可以一直动态的请求到所有的评论数据。
if __name__ == '__main__':
getGameName()
while(len(listAllContent)<(int)(maxDataSize)):
checkExit = getInitCursorValue()
time.sleep(0.5)
if checkExit == True :
if reloadDataNum >= 5 :
print("连接超时 5 次,结束")
break
fun2(listAllContent)
time.sleep(1)
测试:拉取PUBG100条评论
工程链接:
Ackerman1998/Craw-SteamComment (github.com)
python版本:3.7.0
请求的URL格式:https://store.steampowered.com/appreviews/{appid}?nextCursor:用来索引下一页评论的下标,初始值等于*,下一页的值从请求的页面中可以拿到,这个值的键为"cursor"。因此通过这个URL可以一直动态的请求到所有的评论数据。
python
SalienSnake.py [--token <token>] [--file <filename>] [--language <language>] [--list-planets] [--debug]
-t,--token(单帐户模式) -来自令牌值
-f, --file (多帐户模式) -带有令牌的文件(每行一个)
-l, --list -planets-打印带有行星名称和ID的列表
Steam
评论
编辑器让您可以轻松地实时创建和修改您的
评论
,而无需手动应用
Steam
复杂的标记标签。
只需输入您的
评论
,点击“复制到剪贴板”,然后将其粘贴到
Steam
中即可!
虽然标记是自动应用的,但目前有一些元素可能需要您在发布
评论
之前进行修改。
默认情况下,块引用的作者值为“author”。 根据您的喜好修改它,或完全省略它。
文本编辑器是并使用 CSS 修改
该网站使用
颜色以及其他布局创意主要来自
Steam
自己的网站:
完全欢迎对该项目的所有贡献。 任何可以改进编辑器、网站性能、布局或修复错误的东西都可能与基础项目合并。
def test_commentgetlist(self):
loginToken = self.test_login()
url = "https://xxx.xxx.com.cn/api/comment.getlist"
data = {"userId": "ceshi", "contentId": "XXXX", "page": "1",
"loginToken": loginTok
import requests
import re
url=‘https://
steam
community.com/market/listings/730/AK-47 | Redline (Field-Tested)’
headers={
‘user-agent’:‘Mozilla/5.0 (Linu...
在不登录的情况下频繁访问
steam
市场很容易被禁止访问,由于
steam
社区市场被墙了,所以需要挂vpn才能正常爬数据
首先挂好VPN,登录网页版
steam
,得到cookies和user-agent的内容,然后复制到headers中的cookies和user-agent位置上
设置好相关的路径后就可以了
得到的数据会保存到csv文件中
csgo的每一种箱子都会有一个对应的id,得到相应的ID然后保...
如果您想在
Python
ATS 中
获取
Python
的版本信息,可以使用 `sys` 模块中的 `version_info` 属性来
获取
。具体来说,您可以使用以下代码来
获取
Python
的版本信息:
```
python
import sys
#
获取
Python
版本信息
python
_version = sys.version_info
# 输出版本信息
print('
Python
版本信息:',
python
_version)
`version_info` 是一个元组,包含了
Python
的主版本号、次版本号和微版本号等信息。通过这个方法,您可以
获取
到
Python
的版本信息,从而进行后续的操作。