python 爬虫 计算博客园浏览量,刷浏览量

首先进入博客园的管理页面:

通过观察A-JAX请求,发现博客的分类(categories)是一个json格式的数据即:

                                  

于是先爬取categories。通过各个分类的页面进而爬去地址,浏览量,打开一个category的页面:

检查网页

   

这样就得到了每个博客的地址和浏览量了

上代码,其他一些问题在代码中给出注释:

import time

import requests
import json
import re
from selenium import webdriver

url = ‘https://i.cnblogs.com/categories‘
base_url = ‘https://i.cnblogs.com/posts?‘
views = 0
url_list = []
headers = {
    #在headers中添加上自己的cookie
    ‘cookie‘: ‘你自己的cookie‘,‘user-agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36‘,
    ‘upgrade-insecure-requests‘: ‘1‘
}
pattern1 = re.compile(‘<td>发布</td>.*?\d.*?(\d{1,})‘, re.S)        #正则表达式 #这边尤其要注意到浏览量有可能不只是一个位数,还可能是二位数三位数,所以写正则的时候应该是(\d{1,})
pattern2 = re.compile(‘<td class="post-title"><a href="(.*?)"‘, re.S)    #正则表达式
response = requests.get(url=url, headers=headers)
html = response.text
data = json.loads(html)            #通过json.loads把数据转化成字典格式
categories = (i[‘CategoryId‘] for i in data)
for category in categories:
    cate_url = base_url + ‘categoryid=‘ + str(category)  #build每个category的地址
    headers[‘referer‘] = cate_url
    response = requests.get(cate_url, headers=headers)
    html = response.text
    results1 = re.findall(pattern1, html)    #浏览量的findall结果
    results2 = re.findall(pattern2, html)    #网页地址的findall结果
    if results1:
        for result1 in results1:
            views = views + int(result1)    #通过int()内置函数,把string格式的数字转化为int格式的数值,计算浏览量
        for result2 in results2:
            url_list.append(‘https://‘ + result2)    #build地址

print(‘总浏览量为:‘, views)
print(url_list)
options = webdriver.ChromeOptions()    #通过selenium 模块中的webdriver 模拟一个chrome浏览器
#设置中文
options.add_argument(‘lang=zh_CN.UTF-8‘)
#更换头部
options.add_argument(‘user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"‘)
#https://www.cnblogs.com/francischeng/p/9437809.html
#www.cnblogs.com/francischeng/p/9437809.com‘
driver = webdriver.Chrome(chrome_options=options)
while True:
    for url in url_list:
        driver.delete_all_cookies()
        driver.get(url)
        time.sleep(2)    #睡眠两秒

总结。

1.主要遇到的错误是,正则表达式中爬取浏览量的问题,刚开始只写了(\d),也就是一个数字。然而浏览量可能是二位数三位数,所以应该改成(\d{1,})这样可以爬取多位的数字。

2.通过单纯的模拟浏览器并不能刷浏览量,可能一个ip一天只能增加几个浏览量

原文地址:https://www.cnblogs.com/francischeng/p/9602422.html

时间: 2024-11-08 03:43:11

python 爬虫 计算博客园浏览量,刷浏览量的相关文章

运用python抓取博客园首页的所有数据,而且定时持续抓取新公布的内容存入mongodb中

原文地址:运用python抓取博客园首页的所有数据,而且定时持续抓取新公布的内容存入mongodb中 依赖包: 1.jieba 2.pymongo 3.HTMLParser # -*- coding: utf-8 -*- """ @author: jiangfuqiang """ from HTMLParser import HTMLParser import re import time from datetime import date im

运用python抓取博客园首页的全部数据,并且定时持续抓取新发布的内容存入mongodb中

原文地址:运用python抓取博客园首页的全部数据,并且定时持续抓取新发布的内容存入mongodb中 依赖包: 1.jieba 2.pymongo 3.HTMLParser # -*- coding: utf-8 -*- """ @author: jiangfuqiang """ from HTMLParser import HTMLParser import re import time from datetime import date im

使用python selenium-webdriver模拟博客园登录

初学python,最近在抱着虫师的python+selenium自动化的书看,也尝试写个登录功能的验证2333 code:########################## #使用python selenium-webdriver #模拟博客园的登录流程 #首页--登录页面--跳转回首页--检查--退出登录恢复环境 ########################### from selenium import webdriver import time import sys url_cnbl

爬虫实战【1】使用python爬取博客园的某一篇文章

第一次实战,我们以博客园为例. Cnblog是典型的静态网页,通过查看博文的源代码,可以看出很少js代码,连css代码也比较简单,很适合爬虫初学者来练习. 博客园的栗子,我们的目标是获取某个博主的所有博文,今天先将第一步. 第一步:已知某一篇文章的url,如何获取正文? 举个栗子,我们参考'农民伯伯'的博客文章吧,哈哈.他是我关注的一个博主. http://www.cnblogs.com/over140/p/4440137.html 这是他的一篇名为"[读书笔记]长尾理论"的文章. 我

PageRank 计算博客园用户排名

PageRank 通过网页与网页之间的链接关系计算各网页权重,一般权重高的网页特点是:链接向它的网页数量多.链向它的网页其权重也较高.PageRank 就是通过这样的连接关系,一轮轮迭代计算后得出各网页的权重. 思路拓展一下,其实人与人之间也是连接着的,在社会的人际关系网中,每个人的社会地位和身价也是不同的.以微博为例,我们都有关注者和粉丝(类似网页之间的链接),可以发现所谓的“大V”基本上粉丝数量多,并且粉丝里不乏很多其他“大V”,所以这个帐号的价值就大. 同样博客园也具有类似的社交关系,用户

python+scrapy分析博客园首页4000篇优质博客(图解)

1.侵删 本文数据是获取的博客园首页的4000条数据,为了不对博客园服务器造成压力,所以源码不会公开,在此,敬请博客园官方团队放心. 获取到的数据从2019-7-11到2019-9-12,此数据也不会公开. 由于会涉及到一些博主的数据,所以有博主不愿公开数据,联系我及时删除. 2.先上数据分析结果 写文最多的博主top6 ---->(最勤劳的博主)?(′?`*) 黑白影-->发文54篇 周国通-->发文38篇 宜信技术-->发文30篇 削微寒-->发文28篇 泰斗贤若如--&

Python - 爬取博客园某一目录下的随笔 - 保存为docx

1 #coding:utf-8 2 import requests 3 from bs4 import BeautifulSoup 4 import MySQLdb 5 6 7 def get_html(url): 8 ''' 9 获取页面HTML源码,并返回 10 ''' 11 html = requests.get(url) 12 content = html.text.encode('utf-8') 13 return content 14 15 def get_blog_html_lis

用python自动登录博客园

Python自动化第一天 Python强大的功能解放你的双手,账号多了,登录麻烦,密码一样又感觉不安全,不一样有容易忘记或混淆,咋办呢?这个时候python就上场了,它说:“简单,用自动化写个登录代码,简单粗暴,在封装起来,以后再也不用担心记不住了”下面写了个简单的博客园登录,写的不怎么好哈,有需要的兄弟姐妹可以看看,然后自己改改就能换成你们想登录的账号了,对于封装和导入,下篇再来介绍 from selenium import webdriverimport timea=webdriver.Ch

python模拟登录博客园(附:问题求教)

经过分析,博客园登录时采用了JSEncrypt加密,因此登录请求时要用密文,涉及字段如下 input1:用户名对应的密文 input2:密码对应的密文 登录请求链接https://passport.cnblogs.com/user/signin 1 import urllib 2 import http.cookiejar 3 import json 4 5 cookie = http.cookiejar.CookieJar() 6 cookie = http.cookiejar.Mozilla