搜狗微信文章url解码
最近看教程爬取搜狗微信文章,前边工作做好爬取ok,到了抓取每个文章的url时候出现了问题
这一串并不是文章真正的url,直接点的会弹出输入验证码,ok,去百度,吸取各个大佬的经验,得知了这只是一个未处理的url,处理过后才能得到真正的url。
具体过程(吸取前人经验总结的,百度真是个好东西):
首先这个url不是真正的url,在网页中点击标题后,会触发一个事件,这个事件会为我们在网页源代码中看到的url加上两个参数,已经有人把这个事件用python代码写出来了,也可以保存下来用execjs执行js代码获得加工后的url。加工后的url也不是真正的url,而是请求加工后的url后,返回一段js代码,这段代码会暴露出真正的url。具体分析过程可以见下边别人的博客,这里是对他们的补充(因为爬虫不断更新,或者各位大佬没说清楚的细节)。
这是他翻译的代码
r是从href属性下拿到的
def url_decode(r): url = 'https://weixin.sogou.com' + rb = random.randint(0, 99)a = url.index('url=')a = url[a + 30 + b:a + 31 + b:]url += '&k=' + str(b) + '&h=' + areturn url
别人的博客
看完后请回到这里,这里会有一些重要的补充(在最后会说明到底需要什么样的headers)。
ok
捋一下:
拿到原始url就是href里的东西,然后经过代码初步加工(加两个参数),然后请求这个url,获得返回的js代码,执行js代码获得真正的url
要注意的是访问过程中需要headers和cookie,headers要包含一项重要的参数就是
'Referer': 'https://weixin.sogou.com/weixin?query=%E9%A3%8E%E6%99%AF&type=2&page=17&ie=utf8'
这代表了这篇文章是从那一页点出去的,后边的参数page=17代表这是从17页出去的,但是你把这个17改成其他的也会出正确的结果。
这一点上篇博客的作者未说明白,就很头痛
完整代码:
import requests
import random
import execjs
headers ={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6788.400 QQBrowser/10.3.2843.400',
'Referer': 'https://weixin.sogou.com/weixin?query=%E9%A3%8E%E6%99%AF&type=2&page=78&ie=utf8',
'Cookie':'请写自己的cookie'
}#这个r是从href属性中随便找的一个
r = '/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS-YkygAfURZixdHSWWTpjKGkObPViAwEPVqXa8Fplpd9W1RjMz0jVEOYLI-rHUPgtBk2_TyeoA3GDJspUagW-Yy9H6-7QCE2hSaBhOGtNMj4F0FcxDoTjZybKWio3tq6IMm2GquGlhKJqAgaYZNJG8637wb_OeiFDqWh7iDLQRH83eTM7rFoCnQIl6fai6Q9VK8x6EAqg2mK506YFvY2wmPs46dn8Efgxg..&type=2&query=%E9%A3%8E%E6%99%AF'def url_decode(r): url = 'https://weixin.sogou.com' + rb = random.randint(0, 99)a = url.index('url=')a = url[a + 30 + b:a + 31 + b:]url += '&k=' + str(b) + '&h=' + areturn url
url = url_decode(r)resp = requests.get(url,headers=headers)print(resp.content.decode('utf8'))
结果:
用execjs处理一下就可以了
js_code = resp.content.decode('utf8')comment = re.compile('<script>(.*?)</script>',re.DOTALL)js_code = 'f = function(){%s}'%(comment.findall(js_code)[0].replace('window.location.replace(url)','return url;'))print(execjs.compile(js_code).call('f'))
其中js_code就是网页返回值
处理完后打印出的就是正确的url
搜狗微信文章url解码相关推荐
- 爬取搜狗微信文章笔记1
爬取搜狗微信文章笔记1 错误1 ```pythonprint('https://weixin.sogou.com'+index) TypeError: can only concatenate str ...
- 搜狗微信文章爬取(中)
GitHub: https://github.com/utopianist/SougouWeixin 前言 上节,我们已经成功构造了包含参数 SNUID 的 Cookie 池,这节我们将正式爬取 we ...
- python爬虫——使用xpath爬取搜狗微信文章
缺点:爬取一定数量之后会出现验证码,导致不能继续爬取,需要更换ip才可以继续爬取,或者在浏览器重新输入验证码之后复制cookie后方能继续爬取. import requests from fake_u ...
- 使用redis所维护的代理池抓取微信文章
搜狗搜索可以直接搜索微信文章,本次就是利用搜狗搜搜出微信文章,获得详细的文章url来得到文章的信息.并把我们感兴趣的内容存入到mongodb中. 因为搜狗搜索微信文章的反爬虫比较强,经常封IP,所以要 ...
- 搜狗微信临时链接的转换
搜狗微信临时链接的转换 本文主要叙述的是如何获取搜狗微信的链接并转换成永久链 对搜狗微信的分析 获取uin和key来转换永久链接 通过模拟浏览器然后安装插件获取永久链接 本文主要叙述的是如何获取搜狗微 ...
- 使用QueryList解析微信文章
背景:最近工作中需要做一个通过微信文章url抓取微信文章的功能,网页解析使用的是QueryList.将代码实现的逻辑记录一下. 具体实现代码如下: /*** @param $url 微信文章url* ...
- python爬取公众号推荐_python爬搜狗微信获取指定微信公众号的文章
前言: 之前收藏了一个叫微信公众号的文章爬取,里面用到的模块不错.然而 偏偏报错= =.果断自己写了一个 正文: 第一步爬取搜狗微信搜到的公众号: http://weixin.sogou.com/we ...
- 如何用python爬取公众号文章搜狗微信搜索_python抓取搜狗微信公众号文章
初学python,抓取搜狗微信公众号文章存入mysql mysql表: 代码: import requests import json import re import pymysql # 创建连接 ...
- 如何用python爬取公众号文章搜狗微信搜索_python如何爬取搜狗微信公众号文章永久链接的思路解析...
这篇文章主要介绍了python如何爬取搜狗微信公众号文章永久链接的思路解析 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧. 本文主要讲解思路,代码部分请自行解决搜狗微信 ...
- 基于搜狗微信爬取微信公众号的文章
1. 引入模块和函数 from requests_html import HTMLSession from urllib.parse import urlparse, parse_qs import ...
最新文章
- std::map char*做key
- python用途与前景-java和Python的前景谁更好
- Android的按钮单击事件及监听器的实现方式
- springboot学习笔记一(从maven项目到springboot)
- SAP Spartacus CORS 设置
- jsf 自定义属性_必填字段的自定义JSF验证器
- div自动滚动_从手机滚动丢帧问题,学习浏览器合成与渲染层优化
- Amoeba 实现Mysql的读写分离
- 如何使用Java语言实现一个网页爬虫
- Not enough information to list image symbols. Not enough information to list load addresses in ...
- 计算机名、有线网卡mac地址、无线网卡mac地址
- php 微信支付md5签名,微信支付V3支付签名无效解决方案
- Java中的equals和==比较
- 看这里→大数据工程技术人员系列课程—《大数据工程技术人员-大数据基础技术》正式上线!...
- ZYNQ-7000概述
- 几个著名的3D测试场景与模型
- mysql强制走索引
- 数据库常用的命令讲解
- 《权威指南》笔记 - 8.8函数式编程
- [PPT]用PPT来做2019苹果发布会演示文稿【附源文件下载】
热门文章
- NAL聚合包(STAP-A)
- Excel数据分析高级技巧②——数据透视表(组合/切片器/计算字段/数据透视图/条件格式)
- ARQ协议与滑动窗口协议
- 生物信息分析中的reads是什么
- RockWare RockWorks 17.0.0 1CD地表数据可视化软件
- 淘宝/天猫获得淘口令真实url API
- paypal java sdk_PayPal-Java SDK /信用卡付款问题
- Java代理模式概述及应用场景
- linux下常用的dns软件,Linux常见应用--DNS服务器常见应用实现
- 怎么把一张暗的照片调亮_美图秀秀教你批量将偏暗的照片提亮