通过python脚本刷高博客的浏览量,之前已经给大家分享过。但是由于博客页面的改版,以及旧有代理网站的失效。导致原有的脚本调整后才能继续使用。
这里分享一下,更新后的脚本:
改动点:
-
针对CSDN新版的博客列表页面,根据
article
模块获取博客地址
-
更换代理地址网站爬取。代理网站(
http://www.xiladaili.com/gaoni/[2-300]/
)已经废弃,现在使用新的代理网站(https://www.kuaidaili.com/free/inha/
)。除了bs提取代理信息外,增加了通过正则解析JS获取代理数据
-
增加请求头的随机设置。(更新后的代理解析代码)
实例代码:
def parseIPList(url="https://www.kuaidaili.com/free/inha/"):
"""
获取代理地址
:param url:代理之地的网站 # "https://www.beesproxy.com/free" "https://proxy.mimvp.com/freeopen"
:return: 代理的地址列表
"""
def search_by_re(string):
import re
import json
IPs = []
pattern= re.compile( r'const fpsList = (.*?);')
re_result = pattern.search(string)
if not re_result:
return IPs
ips = json.loads(re_result.groups()[0])
for ip_info in ips:
IPs.append([ip_info['ip'], ip_info['port']])
return IPs
def search_by_bs(string):
IPs = []
soup = BeautifulSoup(string)
tds = soup.find_all("td")
ip = ''
port = ''
# if td.attrs.__len__() == 0:
# if re.search(IPRegular, td.text):
# # print(td.text)
# IPs.append(td.text.split(':'))
# if 'free-proxylist-tbl-proxy-ip' in td.attrs :
# print(td.text)
# if 'free-proxylist-tbl-proxy-port' in td.attrs :
# print(td.text)
for td in tds:
if 'data-title' not in td.attrs:
continue
if 'IP' == td.attrs['data-title']:
ip = td.text
if "PORT" == td.attrs['data-title']:
port = td.text
IPs.append([ip, port])
return IPs
url += f'{random.randint(1, 300)}/'
headers_proxy = headers.copy()
headers_proxy.update({"User-Agent": random.choice(user_agent)})
del headers_proxy['Referer']
response = requests.get(url, headers=headers_proxy)
IPs = []
IPs.extend(search_by_bs(response.text))
IPs.extend(search_by_re(response.text))
return IPs
仅注:供大家学习参考