前言
仅供技术交流
看着自己那可怜的阅读量,内心隐隐作痛
但我们其实可以自己给自己点击,这样,阅读量也是可以+1…日复一日,年复一年,终有一天能超越所有csdn大佬(2333),但对于比较懒的人还是…emm
所以你已经是个成熟的爬虫了,该学会自己给自己访问了2333
那该如何做?
从头来吧
我们可以通过简单的爬虫程序来访问一个页面 /滑稽
html = requests.get(url)
当我们知道一篇博客url的时候,运行一遍这样就可以使博客阅读+1
但如果大佬有很多博客…那…所以我们需要获取我们所有博客的url,通过查看博客主页的源代码,我们发现每一篇博客都有一串数字来代表这个独立的博文
我们可以通过正则表达式或xpath等方式来获取这一些数字编号,然后用txt保存好每篇的url(我是这么干的),其中还涉及一个就是翻页的问题,毕竟很多大佬的博文都有非常多页,通过观察我们发现csdn的翻页是个Get请求,而每一页的url只是一个数字的不同,所以我们可以通过一个for循环来遍历这些页面获取
def get_id(name,url):
name = name+'.txt'
text = open(name,'a')
for j in range(1,100):
try:
html = requests.get(url+'/article/list/'+str(j)+'?',headers = headers).text
id_list = re.findall(r'data-articleid="(.*?)">',html)
if id_list==[]:
print("空")
break
else:
for i in range(0,len(id_list)):
text.write(url+'/article/details/'+id_list[i]+'\n')
print(id_list)
except Exception as errors:
print(errors)
text.close()
然后就是通过循环遍历你所保存的所有博文的url,这样懒人工具就完成辽
for line in range(0, length):
try:
line_url = all_url[line]
line_url = line_url.rstrip('\n')
enter_web(line_url)
print(line_url)
except Exception as errors:
print(errors)
f_txt.close()
下面是个完整的代码
代码
import re
import requests
import time
import telnetlib
import os
import random
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
def get_id(name,url):
name = name+'.txt'
text = open(name,'a')
for j in range(1,50):
try:
html = requests.get(url+'/article/list/'+str(j)+'?',headers = headers).text
id_list = re.findall(r'data-articleid="(.*?)">',html)
if id_list==[]:
print("空")
break
else:
for i in range(0,len(id_list)):
text.write(url+'/article/details/'+id_list[i]+'\n')
print(id_list)
except Exception as errors:
print(errors)
text.close()
def enter_web(urls):
try:
html = requests.get(urls,headers = headers)
print("+1")
except:
print("-1")
if __name__=="__main__":
url = 'https://blog.csdn.net/qq_37174835' #博客主页
name = 'tfl' #改成你的name
ss = name+'.txt'
while 1:
if os.path.exists(ss)==False:
print("文件不存在")
get_id(name,url)
f_txt = open(ss, 'r')
all_url = f_txt.readlines()
length = len(all_url)
for line in range(0, length):
try:
line_url = all_url[line]
line_url = line_url.rstrip('\n')
enter_web(line_url)
print(line_url)
except Exception as errors:
print(errors)
f_txt.close()
time.sleep(240)
pass
想要找出一个用户所有博文只需改下面两行
if __name__=="__main__":
url = 'https://blog.csdn.net/qq_37174835' #博客主页
name = 'cctv' #改成你的name