Python 刷简书的浏览量 阅读数端午节快乐。熬夜看世界杯,先刷到 10k 吧。简易爬虫 common.py

端午节快乐。熬夜看世界杯,先刷到 10k 吧。


使用 homebrow 安装 python 安装库时不需要再输入 [sudo] 。

$ brew install python # python 3
$ brew install python@2 # python 2
$ pip install virtualenv # 虚拟环境
$ pip install virtualenvwrapper
$ cat ~/.bashrc
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Code/python
source /usr/local/bin/virtualenvwrapper.sh
$ cat .bash_profile 
if [ "${BASH-no}" != "no" ]; then
    [ -r ~/.bashrc ] && . ~/.bashrc
fi
$ mkvirtualenv jianshu
(jianshu) $
$ deactivate # 退出虚拟环境
$ workon # 虚拟环境列表
$ workon jianshu # 进入 jianshu 虚拟环境  

识别网站所用技术

$ pip install builtwith
$ python
>>> import builtwith
>>> builtwith.parse('http://iosdevlog.com')
{u'blogs': [u'Jekyll'], u'cms': [u'Jekyll']}

http://iosdevlog.com 是用 Jekyll 搭建的。

寻找网站所有者

$ pip install python-whois
>>> import whois
>>> print(whois.whois('iosdevlog.com'))
{
  "updated_date": "2017-03-23 22:19:16", 
  "status": "ok https://icann.org/epp#ok", 
  "name": null, 
  "dnssec": "unsigned", 
  "city": "Hangzhou", 
  "expiration_date": "2018-10-01 20:13:15", 
  "zipcode": null, 
  "domain_name": [
    "IOSDEVLOG.COM", 
    "iosdevlog.com"
  ], 
  "country": null, 
  "whois_server": "grs-whois.hichina.com", 
  "state": "Zhejiang", 
  "registrar": "HiChina Zhicheng Technology Ltd.", 
  "referral_url": null, 
  "address": null, 
  "name_servers": [
    "F1G1NS1.DNSPOD.NET", 
    "F1G1NS2.DNSPOD.NET"
  ], 
  "org": null, 
  "creation_date": "2015-10-01 20:13:15", 
  "emails": "DomainAbuse@service.aliyun.com"
}

http://iosdevlog.com 当时是在万网注册的。

简易爬虫 common.py

# -*- coding: utf-8 -*-

import urllib2
import urlparse

def download(url, user_agent='iosdevlog', proxy=None, num_retries=2):
    """Download function with support for proxies"""
    print 'Downloading:', url
    headers = {'User-agent': user_agent}
    request = urllib2.Request(url, headers=headers)
    opener = urllib2.build_opener()
    if proxy:
        proxy_params = {urlparse.urlparse(url).scheme: proxy}
        opener.add_handler(urllib2.ProxyHandler(proxy_params))
    try:
        html = opener.open(request).read()
    except urllib2.URLError as e:
        print 'Download error:', e.reason
        html = None
        if num_retries > 0:
            if hasattr(e, 'code') and 500 <= e.code < 600:
                # retry 5XX HTTP errors
                html = download(url, user_agent, proxy, num_retries-1)
    return html

if __name__ == '__main__':
    print(download('http://iosdevlog.com'))

网站地图爬虫 sitemap.py

# -*- coding: utf-8 -*-

import re
from common import download

def crawl_sitemap(url):
    # download the sitemap file
    sitemap = download(url)
    # extract the sitemap links
    links = re.findall('<loc>(.*?)</loc>', sitemap)
    # download each link
    for link in links:
        html = download(link)
        # scrape html here
        # ...

if __name__ == '__main__':
    crawl_sitemap('http://iosdevlog/sitemap.xml')

刷简书的浏览量 阅读数 jianshu_views_count.py

使用 postman 导出为 python - request ,当然也可以导出成其它语言代码。

postman.png

# -*- coding: utf-8 -*-
# iOSDevLog

import requests
import re
from common import download # 调用前面写的下载函数

# 阅读数
def crawl_views_count(jianshu_url):
    jianshu = download(jianshu_url)
    views_count = re.search(r'views_count":(\d+),', jianshu).group(1)
    print("views_count = " + views_count)

# uuid
def crawl_uuid(jianshu_url):
    jianshu = download(jianshu_url)
    uuid = re.search(r'uuid":"([a-z0-9\-]+?)"}', jianshu).group(1)

    return uuid

if __name__ == '__main__':
    jianshu_url = 'https://www.jianshu.com/p/6f18ca5521a6'
    max_count = 1000 # 刷阅读最大次数

    uuid = crawl_uuid(jianshu_url)
    print("uuid = " + uuid)
    mark_viewed_url = jianshu_url.replace("/p/", "/notes/") + '/mark_viewed.json'
    print("mark_viewed_url = " + mark_viewed_url)
    payload = "uuid=" + uuid
    print("payload = " + payload)

    headers = {
        'Origin': "https://www.jianshu.com",
        'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.1 Safari/605.1.15",
        'Referer': jianshu_url,
        'Content-Type': "text/plain",
        'Cache-Control': "no-cache"
    }

    for _ in range(0, max_count):
        requests.request("POST", mark_viewed_url, data=payload, headers=headers)
        crawl_views_count(jianshu_url) # 检查阅读是否变更

GitHub 源码

https://github.com/iOSDevLog/jianshu_views_count

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

OpenStack Icehouse私有云实战部署(一)

前言 相信你一定对“云主机”一词并不陌生吧,通过在Web页面选择所需主机配置,即可快速定制一台属于自己的虚拟主机,并实现登陆操作,大大节省了物理资源。但这一过程...

4229
来自专栏Netkiller

日志归档与数据挖掘

日志归档与数据挖掘 摘要 2013-03-19 第一版 2014-12-16 第二版 我的系列文档 Netkiller Architect 手札 Netki...

38310
来自专栏流媒体

Linux下ndk编译移植FFmpeg到Android平台(二)——集成x264和libfdk-aac

在前面的Linux下ndk编译移植FFmpeg到Android平台文章中介绍了如何将最基本的FFmpeg到Android平台。但只是简单的移植了FFmpeg,没...

3368
来自专栏Albert陈凯

文本编码转换工具iconv 附批量转换文件编码命令

网络上下载的好多文本是GBK的编码,在mac电脑上打开是乱码 除了下载有多种编码的文本编辑器外,通过终端也可以进行转码 iconv -f GBK -t UTF-...

4509
来自专栏FreeBuf

解码Gh0st RAT变种中的网络数据

在今年3月份的一次取证调查中,我们找回了一些文件。经过我们初步的判定,这些文件极有可能与一个知名组织Iron Tiger有关。

1423
来自专栏杨建荣的学习笔记

一次数据库无法登陆的问题及排查 (r3笔记第99天)

今天在中午的时候,收到客户的邮件,说数据库访问有问题了,赶紧连到生产环境查看。 结果在尝试登录的时候报了listener的错误,感觉像是listener停了一样...

3205
来自专栏数据和云

匪夷所思:罕见的 Oracle 全局事务锁等待事件分析

杨廷琨,云和恩墨CTO,Oracle ACED,ITPUB Oracle 数据库管理版版主 ,人称"杨长老”,十数年如一日坚持进行Oracle技术研究与写作,号...

1871
来自专栏小白安全

Windows-Exploit-Suggester --- Windows下提权辅助工具

此工具是一款非常好用的Windows下提权辅助工具(已经支持Windows 10下的提权了),国内已经有许多人在用了,但是一直没有相应的中文文档,所以我特地...

3165
来自专栏自动化测试实战

看到就是赚到!Selenium完整框架——告别2017

3829
来自专栏Theo Tsao

安装 Kali Linux 2018.1 及之后的事

1.下载 Kali Linux 镜像文件 2.下载 Win32 Disk Imager 3.用 Win32 Disk Imager 制作U盘启动盘,傻瓜式操作...

5163

扫码关注云+社区

领取腾讯云代金券