搜狗微信公众号文章搜索的反爬处理

问题背景

搜狗搜索提供了一个微信公账号文章搜索的功能,之前看过崔庆才老师的教程(使用代理池通过代理访问),今天自己尝试了一下

分析页面

  1. 进入搜狗微信搜索,查询关键字,显示信息如下:
    Image 5.png

    打开控制台,通过观察请求的url,可以总结出如下关键信息https://weixin.sogou.com/weixin?query=%E7%8B%97&type=2&page=2:链接中query后跟查询关键字,page表示页数。有了这个url,就可以通过requests,使用代码访问了。
  2. 接下来分析页面的文档结构
    Image 7.png
    文章信息通过ul->li的形式展示,每一个li标签中的<div class='txt-box'></div>包含了文章的标题信息。

代码

def get_article_title(url):
    resp = requests.get(url)
    if resp.status_code == 200:
        # print(resp.text)
        info = resp.text.replace('\n', '').replace('\r', '')
        soup = BeautifulSoup(info, 'lxml')
        soup.prettify()
        ul = soup.find('ul', class_='news-list')
        for li in ul.contents:
            if isinstance(li, Tag):
                title = li.find('div', class_='txt-box').contents[0].get_text()
                print(title)
    else:
        print(resp.status_code)


base_url = 'https://weixin.sogou.com/weixin?query=%E7%8B%97&type=2&page={}'

for i in range(1, 11):
    url = base_url.format(i)
    print(url)
    get_article_title(url)

运行代码,打印了url和解析的文章名称,如下:

狗年不苟测天命 188现金红包领回家
出国前把狗给父母养,半年后回来,忍不住失声大哭!
狗,下次遛你那有“狂犬病”的主人时,记得要栓绳好吗?
狗朋友:国庆节后,要“发了”,天上掉馅饼的“功德”被你摊上了,快来接!
狗眼看人低的女人,傻眼了吧
狗眼看人低的女人,傻眼了吧!
医高一尺,狗高一丈,是真正的高手没错了!
10月1日生肖运势_猪、马、狗大吉
10月1日生肖运势_猪、马、狗大吉
“狗,请拴好你家网红”
https://weixin.sogou.com/weixin?query=%E7%8B%97&type=2&page=10

但是,如果多运行几次会发现报错:

Traceback (most recent call last):
  File "D:/pythonSpace/lear_scrapy/test/t1.py", line 45, in <module>
    get_article_title(url)
  File "D:/pythonSpace/lear_scrapy/test/t1.py", line 31, in get_article_title
    for li in ul.contents:
AttributeError: 'NoneType' object has no attribute 'contents'

异常信息很明显,上述代码没有按我希望的解析出ul,ul是None,但是之前是明明可以运行的。然后我尝试将请求返回的网页信息打印出来,部分结果如下:

<div class="content-box">
    <p class="ip-time-p">IP�1.49.13.70<br>访����2018.10.01 00:18:33</p>
    <p class="p2">���好���访������为确认�次访�为正常���为���������</p>
    <p class="p3"><label for="seccodeInput">éª�è¯�ç �ï¼�</label></p>
    <form name="authform" method="POST" id="seccodeForm" action="/">

这段乱码的东西,我放在notepad++里面更改了多种文件编码也没有正确的显示文字信息,不过上面第一个P标签处能看到IP字样,所以我单纯地猜测是因为访问速度过去,我的IP被封住了,为了验证我的猜想,我打开浏览器访问了刚刚的页面,但是结果很奇葩,浏览器可以正常访问!如果IP被封,我的浏览器应该也不能访问才对啊?中间我尝试增加headers,使用代理,但是还是无法正常访问,搞了好久。最后只能说:这东西要是有爬虫经验,应该一早能想到!除了headers和代理,还有一个最重要的,Cookie!!!于是我在浏览器上查看了页面的cookie,有下面的那么多东西。不管了,先把cookie清一下

Image 8.png

好了,清理了cookie以后,刷新出现了下面的页面:
Image 9.png

果然是IP被禁了!但是很奇怪的是,上面这个1.49.13.70根本不是我的IP啊。这其中搜狗搜索做了什么处理我也没想清楚,留着后面看看能不能Google到吧。先输入验证码,保证浏览器可以正常访问。然后我把weixin.sougou.com这个域下的cookie填到代码中再进行访问。发现代码可以正确运行:

https://weixin.sogou.com/weixin?query=%E7%8B%97&type=2&page=10
龚伟:老人与狗|聆听青山
“狗,请拴好你家网红”
主人训练狗子吃饭,马犬忍不住喷出口水泡泡,狗:我顶不住了……
在农村,为什么狗有时候会叫一晚上?农民说出实情,原因想不到!
生肖马,狗年过半!下半年仍需“注意”,小心祸不单行!
“你家的3条狗咬死了我家75只鸡”“你的鸡没办手续”
为发横财,去村里偷狗,十三年后,落得瘫痪乞讨无人管
搞笑图片:活的不如狗系列!
这款脏脏狗蛋糕,因做得太逼真!胆小点的都不敢吃!
“实拍”踹了狗一下竟然叫一群狗砸车

不过最后发现,如果访问频率过快,还是会出现上面的问题。我测试访问一个页面停止2秒没有问题。但是我用代理以后如果不添加cookie,还是会出现上面的错误,而且IP还是那个1.49.13.70。这个坑先记着吧

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容