分享文章:智慧软文投稿发稿平台老平台

优采云 发布时间: 2022-11-30 12:38

  分享文章:智慧软文投稿发稿平台老平台

  

" />

  很多宣传员对网络稿件的收录很感兴趣,因为收录基本上决定了宣传,但是媒体太多了,很难*每一个被选中的媒体*都可靠地收录和展示*,请问公司怎么样?选择智能软文,投稿平台-智能软文投稿发布平台老平台-大量媒体采集

,采集

简单*采集

,智能软文为了解决用户投稿后被收录的需求, * 联合长期收录稳定排名靠前的媒体 编辑已开通收录媒体,通过智慧软文收录媒体,您可以投稿发布。如未被百度收录,可补发或退单,让您再也不用担心被收录。智慧软文出版公司()简称,是一家媒体资源整合平台网络公司。在整合媒体资源网络公司上,发布与正常媒体发布一致。让公司稿的发布变得简洁**。智慧软文深耕网络媒体投稿,力求做到网络投稿的最高境界。智慧软文改变传统投稿模式,利用网络优势,聚集投稿企业和企业以量取胜,直接对接媒体作为大客户。编辑做稿件投稿批发,公司切断零售商链接,允许媒体编辑直接与发布手稿的客户进行交易。经过近期的努力,目前公司已整合国网、网信、中华网、中华网、凤凰网、新浪网、搜狐网、网易网、腾讯网、中国经济网、今世网、北国网、南方网、荆楚网等本土门户企业超过1.4*家,自媒体发布账号资源2.4*家,约占门户企业的2.6%。

  

" />

  网络覆盖,公司式发布,只要注册广告商账号,即可向大门户投稿!增加公司和产品在网络搜索结果中的排名,提高公司和产品的知名度,树立网络品牌。帮助企业、公司完成宣传考核目标,开展网络宣传。智软文是一个直接发布网络,用户和媒体编辑直接连接。它不仅*提供*投稿**,还帮助客户稿件赚钱。收录媒体,均价在左右,通过收录媒体发表的稿件,不收录可以补发或退回,让您再也不用为发稿发愁。通过智能软文出版公司投稿其实很简单。您只需要会上网,登录智能软文发布公司网站(),注册智能软文广告主账号,然后登录智能软文后台,点击发布管理,稿件发布,在右侧的媒体列表中,您可以根据域名和公司名称搜索您要发布的媒体,在搜索结果中筛选出您要发布的媒体,然后点击右侧的*购物车,单击稿件输入,然后输入您要发布的媒体。投稿后点击确认发布,投稿成功。投稿后,相应媒体的编辑会安排发布,并且将在几分钟内返回指向成功发布的链接。您可以在发布管理、历史*发布链接地址中查看媒体编辑器的返回。

  干货教程:今日头条文章采集软件 今日头条文章Collection_JS反向教程:Pytho

  最近在抓取今日头条数据的过程中,发现视频地址的获取比较复杂。结合源码和浏览器找到对应的解决思路,记录一下。

  单击此处获取大量 Python 学习资料!

  内容Python模块实现思路代码及运行结果Text

  1.需要Python模块

   模块主要有requests(或者aiohttp),PyExecJS。

前者是请求文章的源码,后者是Python执行JS代码的依赖库,主要是生成视频地址

12

  实现思路 1、主要需求是将原文中的视频和图片地址替换为本地存储地址。所以在视频分析过程中,需要下载资源,通过抓包找到对应的视频地址,但是要在源码和相关接口响应中找到。找不到对应的视频地址参数。

  通过文章源码(HTML)浏览器渲染,发现video标签是后面生成的,视频地址也存在,那么这个标签肯定是JS生成的,通过搜索找到关键JS的标签脚本. 其次,分析该地址对应的JS,发现有生成的视频

  标注的方法,推测有一种依次生成视频URL的方法,如下:

  这里可以看到我们要的视频的URL是从哪里来的,方法如下:

  分析方法,我们

  发现有一个关键参数t,图2中我们找到了方法e,填入了参数v,这让我想起了var u = o.data., h = u对应返回的结果上一个采集数据包中的接口 .video_1, v = h., 123 3.接口为:/video/urls/1/今日头条/mp4/? =

  接口返回结果:

  同时在源码中可以找到该接口中的parameters(),可以进行正则匹配。

  大家可以大胆尝试在生成视频URL的方法中加值,在JS的最底层添加参数,即:var c = new Array(-1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 , -1, -1,-1,-1 今日头条文章采集软件,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1 1, -1, -1, -1, -1, -1, -1, -1 , -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, - 1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7,8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1 , -1, 26, 27, 28, 29,30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);1

  我用的是JS调试工具(方便调试,检查代码语法),其他方法都可以

  结果是:/b //video/tos/

  cn/tos-cn-ve-31//? a=2011&br=1368&bt=456&cr=0&cs=0&cv=1&dr=0&ds=1&er=&l=&lr=&=&qs=0&rc=%3D%3D&vl=&vr=

  这个地址就是视频地址,所以

  上面的猜想被证明是正确的,但是address参数是有时间限制的,所以需要动态改变。您可以自己测试重建。

  代码和运行结果(我用了不同的方法)。

  async def get_page_source(url):

browser = None

page = None

try:

browser = await launch(

headless=True,

ignoreHTTPSErrors=True,

handleSIGINT=False,

handleSIGTERM=False,

handleSIGHUP=False,

defaultViewport=None,

args=['--disable-setuid-sandbox',

'--no-sandbox',

'--ignore-certificate-errors',

'--disable-gpu',

'--disable-gpu-sandbox',

'--start-maximized'

]

)

pages = await browser.pages()

page = pages[0]

# 是否启用JS,enabled设为False,则无渲染效果

await page.setJavaScriptEnabled(enabled=True)

await page.setViewport(viewport={'width': 1200, 'height': 800})

await page.evaluateOnNewDocument(

'() =>{ Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) }')

await page.evaluateOnNewDocument("() =>{ Object.defineProperty(navigator, 'plugins', { get: () => [] }) }")

await page.evaluateOnNewDocument(

<p>

" />

"() =>{ Object.defineProperty(navigator, &#039;languages&#039;, { get: () => [&#039;zh-CN&#039;,&#039;zh] }) }")

await page.setUserAgent(

&#039;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36&#039;)

await page.goto(url, {&#039;timeout&#039;: 5000, &#039;waitUntil&#039;: &#039;load&#039;})

page_source = await page.content()

return page_source

except Exception as e:

# app_logger.error(&#039;账号:%s, 登录错误:%s&#039; % (username, e))

print(e)

return -1

finally:

if page is not None:

# await page.waitFor(1000)

await page.close()

if browser is not None:

await browser.close()

async def get_data(url, continue_number=0):

"""解析文章源码,提取视频,文字,图片等信息"""

try:

page_source = await get_page_source(url)

# 视频处理,及视频封面

video_message_id_ = re.findall(&#039;tt-videoid="(.*?)"&#039;, page_source)

video_cover_ = re.findall(&#039;tt-poster="(.*?)"&#039;, page_source)

if len(video_message_id_) > 0 and len(video_cover_) > 0:

video_message_id = video_message_id_[0]

video_url = await get_video_url_id(video_message_id, url)

video_cover = await download_video_cover(video_cover_[0], url)

except Exception as e:

if continue_number

video_address = await get_data(url, continue_number)

return video_address

else:

# app_logger.error(&#039;function get_data : %s exceed maximum retry&#039; % url)

return -1

async def get_video_url_id(video_id, article_url, continue_number=0):

"""解析视频main_url"""

header = {&#039;User-Agent&#039;: &#039;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) &#039;

&#039;Chrome/83.0.4103.116 Safari/537.36&#039;}

data_url = &#039;https://i.snssdk.com/video/urls/1/toutiao/mp4/{}&#039;.format(video_id)

try:

async with aiohttp.ClientSession(connector=TCPConnector(verify_ssl=False), timeout=timeout) as session:

async with session.get(data_url, headers=header) as resp:

response = await resp.json()

if response[&#039;message&#039;].strip() == "success":

data = response[&#039;data&#039;][&#039;video_list&#039;]

keys = data.keys()

if &#039;video_3&#039; in keys:

main_url = data[&#039;video_3&#039;][&#039;main_url&#039;]

video_url = await get_video_url(main_url)

video_url_oss = await download_video(video_url, article_url)

  

" />

return video_url_oss

elif &#039;video_3&#039; not in keys and &#039;video_2&#039; in keys:

main_url = data[&#039;video_3&#039;][&#039;main_url&#039;]

video_url = await get_video_url(main_url)

video_url_oss = await download_video(video_url, article_url)

return video_url_oss

else:

main_url = data[&#039;video_3&#039;][&#039;main_url&#039;]

video_url = await get_video_url(main_url)

video_url_oss = await download_video(video_url, article_url)

return video_url_oss

except Exception as e:

if continue_number n;) {

do e = c[255 & t.charCodeAt(n++)];

while (a > n && -1 == e);

if ( - 1 == e) break;

do o = c[255 & t.charCodeAt(n++)];

while (a > n && -1 == o);

if ( - 1 == o) break;

s += String.fromCharCode(e 4);

do {

if (i = 255 & t.charCodeAt(n++), 61 == i) return s;

i = c[i]

} while ( a > n && - 1 == i );

if ( - 1 == i) break;

s += String.fromCharCode((15 & o) 2);

do {

if (r = 255 & t.charCodeAt(n++), 61 == r) return s;

r = c[r]

} while ( a > n && - 1 == r );

if ( - 1 == r) break;

s += String.fromCharCode((3 & i)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线