• python爬虫解决Github访问速度慢


    爬虫解决Github访问速度慢目录

    说明

    由于GitHub收到DNS污染,常常会无法登陆、访问速度慢。
    可以采用网络上的一些方法,更改hosts。
    但是GitHub的IP地址时不时会发生变化,使用ping有时又ping不通。单独查询每个IP地址又很麻烦。
    故此使用python爬虫进行批量查询。

    实现过程

    1.通过https://www.ipaddress.com/可以查询到一系列GitHub网址的IP。通过开发者工具可以得到IP地址在网页中的位置。
    ipaddress
    2.使用python爬虫进行批量请求,将获得的IP地址保存下来。

    import requests
    from bs4 import BeautifulSoup
    import os
    import subprocess
    
    class gitip:
        def __init__(self, ip_list):
            super().__init__()
            self.ip_list = ip_list
            self.header = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
            self.ip_1 = 'https://github.com.ipaddress.com/' # github.com
            self.ip_2 = 'https://github.com.ipaddress.com/gist.github.com' # gist.github.com
            self.ip_3 = 'https://github.com.ipaddress.com/assets-cdn.github.com' # assets-cdn.github.com
            self.ip_4 = 'https://site.ip138.com/raw.githubusercontent.com/' # raw.githubusercontent.com
        def get_1(self): # github.com
            response = requests.get(self.ip_1, headers = self.header)
            soup = BeautifulSoup(response.text, features = 'lxml')
            self.ip_list.append(soup.find_all('ul', {'class': 'comma-separated'})[0].text + '    github.com')
        def get_2(self):
            response = requests.get(self.ip_2, headers = self.header)
            soup = BeautifulSoup(response.text, features = 'lxml')
            self.ip_list.append(soup.find_all('ul', {'class': 'comma-separated'})[0].text + '    gist.github.com')
        def get_3(self):
            response = requests.get(self.ip_3, headers = self.header)
            soup = BeautifulSoup(response.text, features = 'lxml')
            ips = soup.find_all('li')
            for i in range(4):
                self.ip_list.append(ips[i].text + '    assets-cdn.github.com')
        def get_4(self):
            response = requests.get(self.ip_4, headers = self.header)
            soup = BeautifulSoup(response.text, features = 'lxml')
            ip = soup.find_all('a', {'target': '_blank'})[25].text
            self.ip_list.append(ip + '    raw.githubusercontent.com')
            self.ip_list.append(ip + '    gist.githubusercontent.com')
            self.ip_list.append(ip + '    cloud.githubusercontent.com')
            self.ip_list.append(ip + '    camo.githubusercontent.com')
            self.ip_list.append(ip + '    avatars0.githubusercontent.com')
            self.ip_list.append(ip + '    avatars1.githubusercontent.com')
            self.ip_list.append(ip + '    avatars2.githubusercontent.com')
            self.ip_list.append(ip + '    avatars3.githubusercontent.com')
            self.ip_list.append(ip + '    avatars4.githubusercontent.com')
            self.ip_list.append(ip + '    avatars5.githubusercontent.com')
            self.ip_list.append(ip + '    avatars6.githubusercontent.com')
            self.ip_list.append(ip + '    avatars7.githubusercontent.com')
            self.ip_list.append(ip + '    avatars8.githubusercontent.com')
    
    if __name__ == '__main__':
        ip_list = []
        error = 0
        github = gitip(ip_list)
        try:
            github.get_1()
        except:
            print('github.com 申请出错')
            error+=1
        try:
            github.get_2()
        except:
            print('gist.github.com 申请出错')
            error+=1
        try:
            github.get_3()
        except:
            print('assets-cdn.github.com 申请出错')
            error+=1
        try:
            github.get_4()
        except:
            print('raw.githubusercontent.com 申请出错')
            error+=1
        # print(github.ip_list)
        if error == 0:
            for i in github.ip_list:
                print(i)
            try:
                subprocess.run("explorer.exe %s" % 'C:WindowsSystem32driversetc')
            except:
                print('请打开文件路径 C:WindowsSystem32driversetc 更改hosts文件')
        os.system('pause')
    
    • 注:其中raw.githubusercontent.com这个网址在https://www.ipaddress.com/也无法查出IP地址,故转用https://site.ip138.com/。

    3.当查询结束之后,程序将自动打开文件路径 C:WindowsSystem32driversetc 。

     try:
     	subprocess.run("explorer.exe %s" % 'C:WindowsSystem32driversetc')
     except:
     	print('请打开文件路径 C:WindowsSystem32driversetc 更改hosts文件')
    

    此时只需更改这个目录下的hosts文件即可。(在hosts文件末尾添加)
    hosts文件
    修改完hosts之后别忘了在cmd中刷新DNS!!!
    修改完hosts之后别忘了在cmd中刷新DNS!!!
    修改完hosts之后别忘了在cmd中刷新DNS!!!

    ipconfig /flushdns
    

    刷新DNS

    代码下载

    1.python代码以及打包好的exe文件已经存放在我的GitHub(欢迎Star~)。

    2.如果你的GitHub下载实在太慢,可以移步百度网盘。文件夹名称为“github_ip”。
    链接:https://pan.baidu.com/s/19xkAQXn4RZK039EG9z9SVw 提取码:xgaz

  • 相关阅读:
    共享onload事件
    如何让背景图片平铺满整个浏览器页面
    Jmeter-配置环境资源池(如何设置HTTP请求默认值)
    Navicat 15下载教程
    Navicat 15 最新破解版下载_永久激活注册码(附图文安装教程)
    Dynamics CRM记录页面上隐藏子网格“+”标识
    Dynamics CRM 开发模板使用手册(插件开发)
    Dynamics CRM 常用 C# 方法集合
    Microsoft Dynamics CRM 2016 增强版的解决方案(CRM新特性,开发者的福利)
    Dynamics CRM 2016 使用Plug-in Trace Log调试插件
  • 原文地址:https://www.cnblogs.com/lbr12218/p/14609061.html
Copyright © 2020-2023  润新知