本文主要是介绍基于爬虫刷新某网站访问量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言:前一段时间看到有博友写了爬虫去刷新博客访问量一篇文章,当时还觉得蛮有意思的,就保存了一下,但是当我昨天准备复现的时候居然发现文章404了。
所以本篇文章仅供学习交流,严禁用于商业用途
当我在写文章的同时,代码依然在运行,亲测是有效滴。
你很容易会发现你写的那些水文章的url都有一个共同特点,前面都是固定的,就是后面一串数字不一样,这串数字是利用某种算法生成,因为我不会,这里我不展开讲了。我只需要把后面的数字拿过来就好了。
https://blog.csdn.net/SuperBetterMan/article/details/107508976
https://blog.csdn.net/SuperBetterMan/article/details/107368925
https://blog.csdn.net/SuperBetterMan/article/details/107144322
CSDN是基于ip地址去判别有效的访问量,同一个ip访问过多后,会被后台判定是机器,将不再增加访问量,IP甚至会被禁止访问一段时间。那我们找了一个免费的性价比还不错的ip代理,很好解决了这个小小的问题。
昨晚出去散步把代码放在跑,本来以为能刷个几k吧,但是当我回来却发现刷到2百多的时候,后台就给我停掉了,而且网站应该是设置了一个时间戳,在一定时间内,即使不同的ip访问了,也不会增加访问量。
最后当我写完这行的时候,代码也还在跑,真要是闲的没事可以放在云服务器上多搞几个线程跑个几天几夜,然后号就没了
最后附上代码,代码也上传到github,里面有一些其他较为有意思的代码,希望大家可以喜欢,然后给我一个小star
from lxml import html
import time
import random
import requestsimport re
import urllib.request
import urllib.parsefirefoxHead = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0"}
IPRegular = r"(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5]).){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])"
host = "https://blog.csdn.net"
url = "https://blog.csdn.net/SuperBetterMan/article/details/{}"
codes = ["106651719", "106533059", "107508976", "106658304", "106594490", "106242605"]def parseIPList(url="https://www.89ip.cn/tqdl.html?num=60&address=&kill_address=&port=9999&kill_port=&isp="):req = urllib.request.Request(url) # 创建请求对象res = urllib.request.urlopen(req) # 对网页发起请求并获取响应html = res.read().decode("utf-8")p = re.compile(r'(?<![\.\d])(?:\d{1,3}\.){3}\d{1,3}(?![\.\d])')IPS = re.findall(p, html)return IPSdef PV(code):s = requests.Session()s.headers = firefoxHeadcount = 0while True:count += 1print("正在进行第{}次访问\t".format(count), end="\t")IPs = parseIPList()# print(random.choice(IPs))# IPs = ["36.248.129.106","36.248.132.123"]newip = random.choice(IPs)print('ip地址是{}'.format(newip))s.proxies = {"http: {}:9999".format(newip)}s.get(host)# r = s.get(url.format(random.choice(codes)))r = s.get(url.format(codes[random.randint(0, 5)]))en = html.etree.HTML(r.text) # 将网页源代码解析成xpath对象result = en.xpath('//*[@id="articleContentId"]/text()')print(result)Views = en.xpath('//*[@id="mainBox"]/main/div[1]/div/div/div[2]/div[1]/div/span[2]/text()')print('访问量是{}'.format(Views))time.sleep(random.randint(5,10))def main():PV(codes[0])# parseIPList()if __name__ == "__main__":main()
这篇关于基于爬虫刷新某网站访问量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!