爬虫相关
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

103 lines
3.9 KiB

import time
from DrissionPage import Chromium, ChromiumOptions
class Xhs:
def __init__(self, cookies, target='video'):
cookies['domain'] = '.xiaohongshu.com'
self.cookies = cookies
self.url = f'https://creator.xiaohongshu.com/publish/publish?source=official&from=tab_switch&target={target}'
self.tab = self.page()
def init_co(self):
co = ChromiumOptions()
# 设置不加载图片、静音
co.incognito(True)
co.set_argument('--start-maximized')
co.set_pref(arg='profile.default_content_settings.popups', value='0')
# 隐藏是否保存密码的提示
co.set_pref('credentials_enable_service', False)
co.new_env()
return co
def upload_data(self, path):
ele = self.tab('@class=upload-wrapper')
ele.click.to_upload(path)
def page(self):
co = self.init_co()
tab = Chromium(co).latest_tab
tab.set.auto_handle_alert()
tab.set.cookies(cookies=self.cookies)
tab.get(self.url)
return tab
def input_title_connect(self, title, connect):
self.tab.ele('.d-text').input(title)
self.tab.ele('.tiptap ProseMirror').input(connect)
def send_data(self):
for i in range(10):
try:
html = self.tab.ele('.publish-page-publish-btn', timeout=3).html
if 'disabled=""' in html:
print('视频上传中等待')
time.sleep(2)
continue
else:
break
except Exception as e:
print(e)
self.tab.listen.start('/web_api/sns/v2/note')
for i in range(5):
try:
self.tab.ele('@text()=发布').click()
res = self.tab.listen.wait(timeout=3)
body = res.response.body
return body
except Exception as e:
print(e)
return False
def run(self, path=r'D:\2026-3\image\1.mp4'):
self.upload_data(path)
self.input_title_connect(title='我是标题', connect='我是内容')
body = self.send_data()
print(body)
self.tab.close()
if body['success'] is False:
return False
else:
return True
if __name__ == '__main__':
cookies = {
"a1": "197d0c0225d2ahcjv2md8l8lqat171mtu7y0pm97m50000115968",
"webId": "f2675311fd5ef2666e15073ef7876bb9",
"gid": "yjWf8S8JKJ7qyjWf8S8JJW6j2fJ0xSVhJ6fYvW61Y1A09828yWy69U888yy2jKY8YY0Yjf0i",
"x-user-id-ark.xiaohongshu.com": "6861bde9000000001e01790f",
"customerClientId": "706990196683713",
"x-user-id-fuwu.xiaohongshu.com": "6861bde9000000001e01790f",
"abRequestId": "f2675311fd5ef2666e15073ef7876bb9",
"web_session": "040069769f151fb684b60b65903b4b342673dc",
"id_token": "VjEAAApbUkDez1irEIDK8Xskk9WfmyF6jSocgzGzSSzuhxM1cdthEiup4YdxvB5E6aGLqvdW7DvcwGDBYIbfs0G2mejs1Wf5kYkdDCpD2bFo46Gu3EprnI8se/nm/lE80TPlBClU",
"customer-sso-sid": "68c517612540944882532354dbfxgoivhkkgdhc5",
"x-user-id-creator.xiaohongshu.com": "5a0457e4db2e6045e3f6d4e0",
"access-token-creator.xiaohongshu.com": "customer.creator.AT-68c517612540944882532355njwip1rjvzxfmmyi",
"galaxy_creator_session_id": "hMLkZfiS1vCMl6Ls1unn7AdCJN1EQuNkVHCZ",
"galaxy.creator.beaker.session.id": "1772432808364005045757",
"webBuild": "5.13.1",
"acw_tc": "0a0d0eb817726254956234444e57e6308e2dcf480967a5328f30b6f11f5399",
"xsecappid": "ugc",
"loadts": "1772625495974",
"unread": "{%22ub%22:%226982be1e0000000022023e65%22%2C%22ue%22:%226985d2c3000000000a02a602%22%2C%22uc%22:24}",
"websectiga": "16f444b9ff5e3d7e258b5f7674489196303a0b160e16647c6c2b4dcb609f4134",
"sec_poison_id": "1813469f-a50c-4fde-926e-fd85803ad45b"
}
# Xhs(cookies=cookies,target='video').run()
Xhs(cookies=cookies, target='image').run('1.png')