使用 python 模拟浏览器行为刷 csdn 访问量,脚本仅做学习,请勿滥用~
直接丢代码,把代码挂到服务器上可以策马奔腾~,也可以生成二进制文件放到 Windows 桌面上随时使用~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | #!/usr/bin/python # -*- coding: utf-8 -*- __author__ = 'lruihao.cn' import urllib.request import re import time from bs4 import BeautifulSoup opener = urllib.request.build_opener() opener.addheaders = ('User-agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36') def get_article_url(page,name): endurl = "/"+name+"/article/details/........" print(name) p = re.compile(endurl) url = "http://blog.csdn.net/"+name+"/article/list/"+str(page) # 使用 build_opener() 是为了让 python 程序模仿浏览器进行访问 html = opener.open(url).read().decode('utf-8') allfinds = p.findall(html) return allfinds #print('allfinds',allfinds) def start_do(allfinds): urlBase = "http://blog.csdn.net" # 需要将网址合并的部分 # 页面中的网址有重复的,需要使用 set 进行去重复 mypages = list(set(allfinds)) for i in range(len(mypages)): mypagesi = urlBase + mypagesi print('要刷的网页有:') for index, page in enumerate(mypages): print(str(index), page) # 设置每个网页要刷的次数 brushNum = 1 # 所有的页面都刷 print('下面开始刷了哦:') for index, page in enumerate(mypages): for j in range(brushNum): try: pageContent = opener.open(page).read().decode('utf-8') # 使用 BeautifulSoup 解析每篇博客的标题 soup = BeautifulSoup(pageContent) blogTitle = str(soup.title.string) blogTitle = blogTitle0:blogTitle.find('-') print(str(j), blogTitle) except urllib.error.HTTPError: print('urllib.error.HTTPError') time.sleep(3) # 出现错误,停几秒先 except urllib.error.URLError: print('urllib.error.URLError') time.sleep(3) # 出现错误,停几秒先 time.sleep(0.5) # 正常停顿,以免服务器拒绝访问 def main(name): for page in range(1,5): print("************第"+str(page)+"页*************") endurl = get_article_url(page,name) start_do(endurl) if __name__ == '__main__': name = input("输入你的 csdn 用户名:") if name=="": name = "qq_39520417" #cheung99857 while 1: main(name) print("开始休息 ...") time.sleep(40) |
---|
主函数也可以这样写实现同时刷多人的访问量,人多可以适当减少休眠时间,当然有兴趣的可以尝试一下多线程~
1 2 3 4 5 6 7 8 9 | if __name__ == '__main__': # 多用户 names = "qq_39520417","cheung99857" while 1: for name in names: main(name) print("开始休息 ...") # 控制休眠时间相当于控制刷新的速度 time.sleep(30) |
---|