手把手教你使用Python爬取西刺代理数据(下篇)

/1 前言/

前几天小编发布了手把手教你使用Python爬取西次代理数据(上篇),图片描述木有赶上车的小伙伴,可以戳进去看看。今天小编带大家进行网页结构的分析以及网页数据的提取,具体步骤如下。

 

/2 首页分析及提取/

首先进入网站主页,如下图所示。
图片描述

简单分析下页面,其中后面的 1 是页码的意思,分析后发现每一页有100 多条数据,然后网站底部总共有 2700+页 的链接,所以总共ip 代理加起来超过 27 万条数据,但是后面的数据大部分都是很多年前的数据了,比如 2012 年,大概就前 5000 多条是最近一个月的,所以决定爬取前面100 页。通 过网站 url 分析,可以知道这 100 页的 url 为:
图片描述

规律显而易见,在程序中,我们使用一个 for 循环即可完整这个操作:
图片描述

其中 scrapy 函数是爬取的主要逻辑,对应的代码为:
图片描述

通过这个方式,我们可以得到每一页的数据。

 

/3 网页元素分析及提取/

接下来就是对页面内的元素进行分析,提取其中的代理信息。
图片描述

如上图,我们目的是进行代理地域分布分析,同时,在爬取过程中需要使用爬取的数据进行代 理更新,所以需要以下几个字段的信息:

Ip 地址、端口、服务器位置、类型

为此,先构建一个类,用于保存这些信息:
图片描述

这样,每爬取一条信息,只要实例化一个 ProxyBean 类即可,非常方便。

接下来就是提取元素过程了,在这个过程我使用了正则表达式和 BeautifulSoup 库进行关键数据提取。

首先,通过分析网页发现,所有的条目实际上都是放在一个<table>标签中。
图片描述

该便签内容如下:
<table id="ip_list">……</table>
我们首先通过正则表达式将该标签的内容提取出来:
正则表达式为:
<table id="ip_list">([\S\s]*)</table>
, 表示搜索
<table id="ip_list">

</table>
之 间的任意字符组成的数据。Python 中的实现如下:
图片描述

其中得到的 data 就是这个标签的内容了。下面进一步分析。

进入到 table 中,发现每一个代理分别站 table 的一列,但是这些标签分为两类,一 类包含属性 class=“odd”, 另一类不包含。
图片描述

这个时候,可以使用 BeautifulSoup 对标签进行提取:
图片描述

通过这种方式,就能获取到每一个列的列表了。

接下来就是从每个列中获取 ip、端口、位置、类型等信息了。进一步分析页面:

1、IP 字段:
图片描述

我们使用正则表达式对 IP 进行解析,IP 正则如下:

** (2[0-5]{2}|[0-1]?\d{1,2})(.(2[0-5]{2}|[0-1]?\d{1,2})){3}**
图片描述

2、 端口字段
图片描述

端口由包裹,并且中间全部是数字,故可构造如下正则进行提取:

<td>([0-9]+)</td>

图片描述

3、 位置字段

位置字段如下:
图片描述

由 便签包裹,构造如下正则即可提取:
<a href="([>]*)>([<]*)</a>
图片描述

4、类型字段

类型字段如下:
图片描述

由包裹,中间为字母,构造正则如下:

<td>([A-Za-z]+)</td>
图片描述

数据全部获取完之后,将其保存到文件中即可:
图片描述

最后爬取的数据集如下图所示:
图片描述

此次总共爬取了前面 5300 多条数据。

 

/4 小结/

本次任务主要爬取了代理网站上的代理数据。主要做了以下方面的工作:

1、学习 requests 库的使用以及爬虫程序的编写;

2、学习使用反爬虫技术手段,并在实际应用中应用这些技术,如代理池技术;

3、学习使用正则表达式,并通过正则表达式进行网页元素提取;

4、学习使用 beautifulsoup 库,并使用该库进行网页元素的提取。

Python爬虫是一项综合技能,在爬取网站的过程中能够学到很多知识,希望大家多多专研,需要代码的小伙伴,可以在[Python爬虫与数据挖掘]公众号后台回复“代理”二字,即可获取。

想学习更多关于Python的知识,可以参考Python爬虫与数据挖掘网站:http://pdcfighting.com/

——————- End ——————-

往期精彩文章推荐:

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

在公众号后台回复下列关键词可以免费获取相应的学习资料:

Python、网络爬虫 、书籍、数据分析、机器学习、数据结构、

大数据、服务器、Spark、Redis、C++、C、php、

mysql、java、Android、面试题、课堂、其他

手把手教你使用Python爬取西刺代理数据(上篇)

/1 前言/

细心的小伙伴应该知道上次小编发布了一篇关于IP代理的文章,基于Python网络爬虫技术,主要介绍了去IP代理网站上抓取可用IP,并且Python脚本实现验证IP地址的时效性,如遇到爬虫被禁的情况就可以用文章中的办法进行解决。如果没有来得及上车的小伙伴,可以戳这篇文章看看:手把手教你用免费代理ip爬数据

接下来小编要推出的三篇文章,分别从代理网站的介绍和反爬措施介绍、数据抓取、数据可视化操作三方面进行展开,各个方面独占一文,希望对大家的学习有帮助。接下来小编先介绍代理网站及其反爬措施。

 

/2 简介/

西次代理网站是国内收录国内代理的网站,实时数量达到数十万条,上面有很多的代理IP,有的是免费的,有的是付费的。免费的一般是不可用的,即便当时好用,但是也挺不了多久,就会凉凉。

 

/3 反爬虫措施/

本文主要内容为使用 Python 对该网站数据进行爬取,其中爬虫主要利用 requests 库,下面先针对反爬虫措施进行简介。

经过前期测试时发现,该网站反爬虫处理措施很多,测试到有以下几个:

1、直接使用** requests** 库,在不设置任何 header 的情况下,网站直接不返回数据。

2、同一个 ip 连续访问 40 多次,直接封掉 ip,起初我的** ip** 就是这样被封掉的。

为了解决这两个问题,最后经过研究,使用以下方法,可以有效解决:

3、通过抓取正常网络流量,获取正常的 http 请求头(header),并在 requests 请求时设置这些常规的 http 请求头,这样的目的是让目标网站认为我们发出的请求是正常通过浏览器发起而非使用程序自动发起的。这样就可以解决第一个痛点。

4、构建代理池,首先从其他网站获取一批初始代理,利用这些代理在爬取该网站的代理数 据时将爬取到的代理实时加入进来,每次爬取时随机选择一个代理池中的代理,同时,及时将那些失效或者被封的代理移出代理池。这样,我们就不用担心一个ip用久了就被封掉。

为了正常的获取 http 请求头,使用抓包工具 Fiddler 对正常浏览器访问该网站的数据包进行抓取,如图:

提取数据之后,将该数据封装成 requests 库可以识别的 header 字典, 供其调用,这样通过使用正常的数据包,我们就不用担心网站使用头部校验了。在代码中,专门定义一个函数,只需要调用该函数就可以得到该字典:

然后在 requests 请求网站的时候, 设置这个头部即可, 代码如下:

至此,针对反爬虫的措施我们已经提前做好了准备,下一步将进行网页结构的分析以及网页数据的提取,具体实现咱们下篇文章进行详解。

 

/4 小结/

本文主要内容为对代理网站进行了基本简介,而后对代理网站的反爬虫措施进行简介。之后使用抓包工具 Fiddler 对该网站的数据包进行抓取,基于 Python 中的爬虫库 requests ,提前部署了请求头,模拟浏览器。下篇文章将带大家进行网页结构的分析以及网页数据的提取,敬请期待~~

——————- End ——————-

往期精彩文章推荐:

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

在公众号后台回复下列关键词可以免费获取相应的学习资料:

Python、网络爬虫 、书籍、数据分析、机器学习、数据结构、

大数据、服务器、Spark、Redis、C++、C、php、

mysql、java、Android、面试题、课堂、其他

手把手教你使用Python抓取QQ音乐数据(第四弹)

【一、项目目标】

通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名、专辑名、播放链接。

通过手把手教你使用Python抓取QQ音乐数据(第二弹)我们实现了获取 QQ 音乐指定歌曲的歌词和指定歌曲首页热评。

通过手把手教你使用Python抓取QQ音乐数据(第三弹)我们实现了获取更多评论并生成词云图。

此次我们将将三个项目封装在一起,通过菜单控制爬取不同数据。

 

【二、需要的库】

主要涉及的库有:requests、openpyxl、html、json、wordcloud、jieba

如需更换词云图背景图片还需要numpy库和PIL库(pipinstall pillow)

如需生成.exe需要pyinstaller -F

 

【三、项目实现】

1.首先确定菜单,要实现哪些功能:

①获取指定歌手的歌曲信息(歌名、专辑、链接)

②获取指定歌曲歌词

③获取指定歌曲评论

④生成词云图

⑤退出系统

代码如下:

class QQ():
    def menu(self):
        print('欢迎使用QQ音乐爬虫系统,以下是功能菜单,请选择。\n')
        while True:
            try:
                print('功能菜单\n1.获取指定歌手的歌曲信息\n2.获取指定歌曲歌词\n3.获取指定歌曲评论\n4.生成词云图\n5.退出系统\n')
                choice = int(input('请输入数字选择对应的功能:'))
                if choice == 1:
                    self.get_info()
                elif choice == 2:
                    self.get_id()
                    self.get_lyric()
                elif choice == 3:
                    self.get_id()
                    self.get_comment()
                elif choice == 4:
                    self.wordcloud()
                elif choice == 5:
                    print('感谢使用!')
                    break
                else:
                    print('输入错误,请重新输入。\n')
            except:
                print('输入错误,请重新输入。\n')  

第一行创建类,第二行定义菜单函数,这里用了类的实例化,里面所有函数的第一个参数都是self,我认为实例化更方便传参数;

whiletrue使菜单无限循环;

Try…except…使循环不会因报错而退出;

其他代码为设置输入不同数字对应打开不同函数。

2.封装项目(一)为get_info()

代码如下:

def get_info(self):
        wb=openpyxl.Workbook()  
        #创建工作薄
        sheet=wb.active 
        #获取工作薄的活动表
        sheet.title='song' 
        #工作表重命名
 
        sheet['A1'] ='歌曲名'     #加表头,给A1单元格赋值
        sheet['B1'] ='所属专辑'   #加表头,给B1单元格赋值
        sheet['C1'] ='播放链接'   #加表头,给C1单元格赋值
        url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp'
        name = input('请输入要查询的歌手姓名:')
        page = int(input('请输入需要查询的歌曲页数:'))
        for x in range(page):
            params = {
            'ct':'24',
            'qqmusic_ver': '1298',
            'new_json':'1',
            'remoteplace':'sizer.yqq.song_next',
            'searchid':'64405487069162918',
            't':'0',
            'aggr':'1',
            'cr':'1',
            'catZhida':'1',
            'lossless':'0',
            'flag_qc':'0',
            'p':str(x+1),
            'n':'20',
            'w':name,
            'g_tk':'5381',
            'loginUin':'0',
            'hostUin':'0',
            'format':'json',
            'inCharset':'utf8',
            'outCharset':'utf-8',
            'notice':'0',
            'platform':'yqq.json',
            'needNewCode':'0'    
            }
            res = requests.get(url,params=params)
            json = res.json()
            list = json['data']['song']['list']
            for music in list:
                song_name = music['name']
                # 查找歌曲名,把歌曲名赋值给song_name
                album = music['album']['name']
                # 查找专辑名,把专辑名赋给album
                link = 'https://y.qq.com/n/yqq/song/' + str(music['mid']) + '.html\n\n'
                # 查找播放链接,把链接赋值给link
                sheet.append([song_name,album,link])
                # 把name、album和link写成列表,用append函数多行写入Excel
                
        wb.save(name+'个人单曲排行前'+str(page*20)+'清单.xlsx')            
        #最后保存并命名这个Excel文件
        print('下载成功!\n')

3.封装项目(二)为get_id()和get_lyric

代码如下:

def get_id(self):
        self.i = input('请输入歌曲名:')
        url_1 = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp'
        # 这是请求歌曲评论的url
        headers = {'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
        params = {'ct': '24', 'qqmusic_ver': '1298', 'new_json': '1', 'remoteplace': 'txt.yqq.song', 'searchid': '71600317520820180', 't': '0', 'aggr': '1', 'cr': '1', 'catZhida': '1', 'lossless': '0', 'flag_qc': '0', 'p': '1', 'n': '10', 'w': self.i, 'g_tk': '5381', 'loginUin': '0', 'hostUin': '0', 'format': 'json', 'inCharset': 'utf8', 'outCharset': 'utf-8', 'notice': '0', 'platform': 'yqq.json', 'needNewCode': '0'}  
        res_music = requests.get(url_1,headers=headers,params=params)
        json_music = res_music.json()
        self.id = json_music['data']['song']['list'][0]['id']
        # print(self.id)
 
    def get_lyric(self):
        url_2 = 'https://c.y.qq.com/lyric/fcgi-bin/fcg_query_lyric_yqq.fcg'
        # 这是请求歌曲评论的url
        headers = {
        'origin':'https://y.qq.com',
        'referer':'https://y.qq.com/n/yqq/song/001qvvgF38HVc4.html',
        'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
        params = {
            'nobase64':'1',
            'musicid':self.id,
            '-':'jsonp1',
            'g_tk':'5381',
            'loginUin':'0',
            'hostUin':'0',
            'format':'json',
            'inCharset':'utf8',
            'outCharset':'utf-8',
            'notice':'0',
            'platform':'yqq.json',
            'needNewCode':'0',
            }
        res_music = requests.get(url_2,headers=headers,params=params)
        js_1 = res_music.json()
        lyric = js_1['lyric']
        lyric_html = html.unescape(lyric)   #用了转义字符html.unescape方法
        # print(lyric_html)
        f1 = open(self.i+'歌词.txt','a',encoding='utf-8')    #存储到txt中
        f1.writelines(lyric_html)
        f1.close()
        print('下载成功!\n')

这里特别说一下下载歌词的headers里必须加上’origin’和’referer’,要不爬下来数据。

4.封装项目(三)为get_comment()和wordcloud()

代码如下:

def get_comment(self):
        page = input('请输入要下载的评论页数:')
        url_3 = 'https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg'
        headers = {'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
        f2 = open(self.i+'评论.txt','a',encoding='utf-8')    #存储到txt中
        for n in range(int(page)):
            params = {'g_tk_new_20200303': '5381', 'g_tk': '5381', 'loginUin': '0', 'hostUin': '0', 'format': 'json', 'inCharset': 'utf8', 'outCharset': 'GB2312', 'notice': '0', 'platform': 'yqq.json', 'needNewCode': '0', 'cid': '205360772', 'reqtype': '2', 'biztype': '1', 'topid': self.id, 'cmd': '6', 'needmusiccrit': '0', 'pagenum':n, 'pagesize': '15', 'lasthotcommentid':'', 'domain': 'qq.com', 'ct': '24', 'cv': '10101010'}
            res_music = requests.get(url_3,headers=headers,params=params)
            js_2 = res_music.json()
            comments = js_2['comment']['commentlist']
            for i in comments:
                comment = i['rootcommentcontent'] + '\n——————————————————————————————————\n'
                f2.writelines(comment)
            # print(comment)
        f2.close()
        print('下载成功!\n')
 
    def wordcloud(self):
        self.name = input('请输入要生成词云图的文件名称:')
        def cut(text):
            wordlist_jieba=jieba.cut(text)
            space_wordlist=" ".join(wordlist_jieba)
            return space_wordlist
        with open(self.name+".txt" ,encoding="utf-8")as file:
            text=file.read()
            text=cut(text)
            mask_pic=numpy.array(Image.open("心.png"))
            wordcloud = WordCloud(font_path="C:/Windows/Fonts/simfang.ttf",
            collocations=False,
            max_words= 100,
            min_font_size=10, 
            max_font_size=500,
            mask=mask_pic).generate(text)
            wordcloud.to_file(self.name+'云词图.png')  # 把词云保存下来 
        print('生成成功!\n')

5.最后类的实例化

qq = QQ()
qq.menu()

6.效果展示

image
image
image
image
image
image
image
image
image
image

7. 打包成.exe

用pyinstaller -F打包,运行会报错、闪退。

image

看上图报错信息应该和词云图有关,注释掉词云图所需的库,def wordcloud()按下图修改可正常打包,但是就没有生成词云图的功能了:

image
image
image

下载歌词或评论时,如有重名的歌曲,可在歌曲前面加上歌手姓名,如上图的“邓紫棋泡沫”。

 

【四、总结】

1.项目四对前三个项目进行了复习,在巩固了爬虫知识点的同时又复习了类的相关用法;

2.前三个项目可自行戳;文章进行学习:手把手教你使用Python抓取QQ音乐数据(第一弹)手把手教你使用Python抓取QQ音乐数据(第二弹)手把手教你使用Python抓取QQ音乐数据(第三弹)

3.感谢观看,写百行以上的代码是不是轻轻松松呢。祝小伙伴们学业有成,工作顺利!

4.如果需要本文源码的话,请在公众号后台回复“QQ音乐”四个字进行获取,觉得不错,记得给个star噢。

****看完本文有收获?请转发分享给更多的人****

IT共享之家

入群请在微信后台回复【入群】

手把手教你使用Python抓取QQ音乐数据(第三弹)

【一、项目目标】

通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名、专辑名、播放链接。

通过手把手教你使用Python抓取QQ音乐数据(第二弹)我们实现了获取 QQ 音乐指定歌曲的歌词和指定歌曲首页热评。

此次我们在项目(二)的基础上获取更多评论并生成词云图,形成手把手教你使用Python抓取QQ音乐数据(第三弹)。

 

【二、需要的库】

主要涉及的库有:requests、json、wordcloud、jieba

如需更换词云图背景图片还需要numpy库和PIL库(pipinstall pillow)

 

【三、项目实现】

1、首先回顾一下,下面是项目(二)获取指定歌曲首页热评的代码;


def get_comment(i):
    url_3 = 'https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg'
    headers = {
'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
        # 标记了请求从什么设备,什么浏览器上发出
        }
    params = {'g_tk_new_20200303': '5381', 'g_tk': '5381', 'loginUin': '0', 'hostUin': '0', 'format': 'json', 'inCharset': 'utf8', 'outCharset': 'GB2312', 'notice': '0', 'platform': 'yqq.json', 'needNewCode': '0', 'cid': '205360772', 'reqtype': '2', 'biztype': '1', 'topid': id, 'cmd': '8', 'needmusiccrit': '0', 'pagenum': '0', 'pagesize': '25', 'lasthotcommentid': '', 'domain': 'qq.com', 'ct': '24', 'cv': '10101010'}
    res_music = requests.get(url_3,headers=headers,params=params)
    # 发起请求
    js_2 = res_music.json()
    comments = js_2['hot_comment']['commentlist']
    f2 = open(i+'评论.txt','a',encoding='utf-8')    #存储到txt中
    for i in comments:
        comment = i['rootcommentcontent'] + '\n——————————————————————————————————\n'
        f2.writelines(comment)
    # print(comment)
f2.close()

2、下面来考虑如何获取后面的评论,下图是项目(二)评论页面的parms参数;

image

3、网页无法选择评论的页码,想看后面的评论智能一次一次的点击“点击加载更多”;我们可以点击一下看看parms有什么变化。

image

4、这里有个小技巧,先点击下图所示clear按钮,把network界面清空,再点击“点击加载更多”,就能直接找到第二页的数据。

image
image

5、点击加载更多后出现下图。

image
image

6、发现不止pagenum变了,cmd和pagesize也变了,到底那个参数的问题呢,那我们再看下第三页;

image

7、只有pagenum变了,那我们尝试一下把pagenum改成“0”,其他不变,能正常显示第一页数据吗?

image

第一页第一条评论

image

第一页最后一条评论

image

8、能正常显示,那就确定思路了:用第二页的parms,写一个for循环赋值给pagenum,参考项目(二)把评论抓取到txt。

9、代码实现:为了不给服务器造成太大压力,我们本次只爬取20页数据。

import requests,json
 
def get_id(i):
    global id
    url_1 = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp'
    # 这是请求歌曲评论的url
    headers = {'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
    params = {'ct': '24', 'qqmusic_ver': '1298', 'new_json': '1', 'remoteplace': 'txt.yqq.song', 'searchid': '71600317520820180', 't': '0', 'aggr': '1', 'cr': '1', 'catZhida': '1', 'lossless': '0', 'flag_qc': '0', 'p': '1', 'n': '10', 'w': i, 'g_tk': '5381', 'loginUin': '0', 'hostUin': '0', 'format': 'json', 'inCharset': 'utf8', 'outCharset': 'utf-8', 'notice': '0', 'platform': 'yqq.json', 'needNewCode': '0'}
    res_music = requests.get(url_1,headers=headers,params=params)
    json_music = res_music.json()
    id = json_music['data']['song']['list'][0]['id']
    return id
    # print(id)

 

def get_comment(i):
    url_3 = 'https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg'
    headers = {'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
    f2 = open(i+'评论.txt','a',encoding='utf-8')    #存储到txt中
    for n in range(20):
        params = {'g_tk_new_20200303': '5381', 'g_tk': '5381', 'loginUin': '0', 'hostUin': '0', 'format': 'json', 'inCharset': 'utf8', 'outCharset': 'GB2312', 'notice': '0', 'platform': 'yqq.json', 'needNewCode': '0', 'cid': '205360772', 'reqtype': '2', 'biztype': '1', 'topid': '247347346', 'cmd': '6', 'needmusiccrit': '0', 'pagenum':n, 'pagesize': '15', 'lasthotcommentid': 'song_247347346_3297354203_1576305589', 'domain': 'qq.com', 'ct': '24', 'cv': '10101010'}
        res_music = requests.get(url_3,headers=headers,params=params)
        js_2 = res_music.json()
        comments = js_2['comment']['commentlist']
        
        for i in comments:
            comment = i['rootcommentcontent'] + '\n——————————————————————————————————\n'
            f2.writelines(comment)
        # print(comment)
    f2.close()
    input('下载成功,按回车键退出!')

 

def main(i):
    get_id(i)
    get_comment(i)
main(i = input('请输入需要查询歌词的歌曲名称:'))

10、词云图代码

from wordcloud import WordCloud
import jieba
import numpy
import PIL.Image as Image  #以上两个库是为了更换词云图背景图片
 
def cut(text):
    wordlist_jieba=jieba.cut(text)
    space_wordlist=" ".join(wordlist_jieba)
    return space_wordlist
with open("句号评论.txt" ,encoding="utf-8")as file:
    text=file.read()
    text=cut(text)
    mask_pic=numpy.array(Image.open("心.png"))
    wordcloud = WordCloud(font_path="C:/Windows/Fonts/simfang.ttf",
    collocations=False,
    max_words= 100,
    min_font_size=10, 
    max_font_size=500,
    mask=mask_pic).generate(text)
    image=wordcloud.to_image()
    # image.show()
    wordcloud.to_file('云词图.png')  # 把词云保存下来

11、成果展示

image
image

【四、总结】

1、项目三比项目二多的功能:一是通过寻找parms参数里每一页评论页码之间的关系,爬取更多的评论;二是学会生成词云图;(注意读取文件的路径)

2、WordCloud更多参数详见下图,可以研究出更多的玩法;

image

3、不只.txt可以作为词云图的数据源,csv、Excel也可以:

import xlrd 
#引入excel读取模块
 
datafile_path = '你的Excel文件.xlsx'
data = xlrd.open_workbook(datafile_path)
#文件名以及路径
table = data.sheet_by_name('sheet')
##通过名称获取Sheet1表格
nrows = table.nrows
#获取该Sheet1中的有效行数
list = []
for i in range(nrows):
    value = str(table.row_values(i)[1])
    # print(value)
    list.append(value)
# print(pingjia_list)
text = str(list).replace("'", '').replace(',', '').rstrip(']').lstrip('[')
# print(text)

4、爬QQ音乐项目到此告一段落,如有需要的话可以通过Scrapy框架爬取更多的歌曲信息、歌词、评论。但是作为练手项目,重要的不是爬多少数据,而是学会如何爬取指定的数据。

5、第四弹小编将会把前面三个项目封装在一起,通过菜单控制爬取不同数据,敬请期待。

6、需要本文源码的话,请在公众号后台回复“QQ音乐”四个字进行获取。

IT共享之家

入群请在微信后台回复【入群】

手把手教你使用Python抓取QQ音乐数据(第二弹)

【一、项目目标】

通过Python爬取QQ音乐数据(一)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名、专辑名、播放链接。

此次我们在之前的基础上获取QQ音乐指定歌曲的歌词及前15个精彩评论。

 

【二、需要的库】

    主要涉及的库有:requests、json、html

【三、项目实现】

    1.以歌曲“泡沫”为例,查看该界面的XHR

2.通过对XHR的Size进行排序,逐个查看(参考英文含义),我们看到第一个红框内是歌曲评论,第二个框内是歌词!

3.分别查看这两条数据Headers里面Parms参数。

4.发现这几个参数可能会代表不同的歌曲,那到底是哪个呢,我们在代开另一首歌对比一下。

5.发现只有这个topid不同,其他都一样,这就代表topid代表不同歌曲的id,同理我们看一下歌词。

6、确定下来:musicid= topid = 歌曲的id,接下来我们的任务是找到这个id。

7.返回以下界面,也就是我们上一个项目的主战场。

参考上一个项目,很容易找到“id”的值就是我们要寻找的id。

所以思路确定下来:先通过input()输入歌名生成url_1找到该歌曲的“id”参数,再生成url_2获取歌词和评论。

8.代码实现:获取歌曲id,如下所示:

import requests,html,json
url_1 = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp'
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
    # 标记了请求从什么设备,什么浏览器上发出
    }
i = input('请输入需要查询歌词的歌曲名称:')
params = {'ct': '24', 'qqmusic_ver': '1298', 'new_json': '1', 'remoteplace': 'txt.yqq.song', 'searchid': '71600317520820180', 't': '0', 'aggr': '1', 'cr': '1', 'catZhida': '1', 'lossless': '0', 'flag_qc': '0', 'p': '1', 'n': '10', 'w': i, 'g_tk': '5381', 'loginUin': '0', 'hostUin': '0', 'format': 'json', 'inCharset': 'utf8', 'outCharset': 'utf-8', 'notice': '0', 'platform': 'yqq.json', 'needNewCode': '0'}
    
res_music = requests.get(url_1,headers=headers,params=params)
# 发起请求
json_music = res_music.json()
id = json_music['data']['song']['list'][0]['id']
print(id)

9.代码实现:获取歌词

实现方法如下:

url_2 = 'https://c.y.qq.com/lyric/fcgi-bin/fcg_query_lyric_yqq.fcg'
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
    # 标记了请求从什么设备,什么浏览器上发出
    }
params = {
    'nobase64':'1',
    'musicid':id,   #用上面获取到的id
    '-':'jsonp1',
    'g_tk':'5381',
    'loginUin':'0',
    'hostUin':'0',
    'format':'json',
    'inCharset':'utf8',
    'outCharset':'utf-8',
    'notice':'0',
    'platform':'yqq.json',
    'needNewCode':'0',
    }

res_music = requests.get(url_2,headers=headers,params=params)
# 发起请求
js = res_music.json()
lyric = js['lyric']
lyric_html = html.unescape(lyric)   #用了转义字符html.unescape方法
# print(lyric_html)
f1 = open(i+'歌词.txt','a',encoding='utf-8')
f1.writelines(lyric_html)
f1.close()                #存储到txt中
input('下载成功,按回车键退出!')

10. 代码实现:获取评论。

url_3 = 'https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg'
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
    //  标记了请求从什么设备,什么浏览器上发出
    }
params = {'g_tk_new_20200303': '5381', 'g_tk': '5381', 'loginUin': '0', 'hostUin': '0', 'format': 'json', 'inCharset': 'utf8', 'outCharset': 'GB2312', 'notice': '0', 'platform': 'yqq.json', 'needNewCode': '0', 'cid': '205360772', 'reqtype': '2', 'biztype': '1', 'topid': id, 'cmd': '8', 'needmusiccrit': '0', 'pagenum': '0', 'pagesize': '25', 'lasthotcommentid': '', 'domain': 'qq.com', 'ct': '24', 'cv': '10101010'}
res_music = requests.get(url_3,headers=headers,params=params)
// 发起请求
js = res_music.json()
comments = js['hot_comment']['commentlist']
f2 = open(i+'评论.txt','a',encoding='utf-8')    // 存储到txt中
for i in comments:
    comment = i['rootcommentcontent'] + '\n——————————————————————————————————\n'
    f2.writelines(comment)
// print(comment)
f2.close()
input('下载成功,按回车键退出!')

11. 封装函数

12.结果展示

 

【四、总结】

    1.项目二比项目一稍复杂一点,多了一步获取歌曲id的步骤;

2.通过XHR爬取数据一般要使用json,格式为:

res =requests.get(url)
json =res.json()
list = json[‘’][‘’]

3.学习了转义字符html.unescape方法;

4.保存到txt还可以用 with open() as的方法;

5.Python爬取QQ音乐数据(第三弹)将为大家带来如何爬取更多评论,并生成词云图(wordcloud)。

6.需要本文源码的话,请在公众号后台回复“QQ音乐”四个字进行获取。

——————- End ——————-

往期精彩文章推荐:

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

在公众号后台回复下列关键词可以免费获取相应的学习资料:

Python、网络爬虫 、书籍、数据分析、机器学习、数据结构、

大数据、服务器、Spark、Redis、C++、C、php、

mysql、java、Android、面试题、课堂、其他

手把手教你使用Python抓取QQ音乐数据(第一弹)

【一、项目目标】

    获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名、专辑名、播放链接。

由浅入深,层层递进,非常适合刚入门的同学练手。

 

【二、需要的库】

    主要涉及的库有:requests、json、openpyxl

 

【三、项目实现】

1.了解 QQ 音乐网站的 robots 协议

只禁止播放列表,可以操作。

2.进入 QQ 音乐主页 https://y.qq.com/

3.输入任意歌手,比如邓紫棋

4.打开审查元素(快捷键 Ctrl+Shift+I)

5.分析网页源代码 Elements,发现无歌曲信息,无法使用 BeautifulSoup,如下图所示,结果为空。

6.点击 Network,看数据在不在 XHR(无刷新更新页

面),我的经验是先看 Size 最大的,然后分析 Name,

查看 Preview,果然在里面!

7.点击 Headers,拿到相关参数。如下图,仔细观察

url 与 Query String Parameters 参数的关系,发现

url 中的 w 代表歌手名,p 代表页数。

8.通过 json 代码实现,首先小试牛刀,爬取第一页

的数据,url 直接复制过来。成功!

9.引入 params 参数,实现指定歌手、指定页数的查询。

注意代码url为上一步url中“?”之前的部分, params两边的参数都需要加 ’’,requests.get 添加 params,参数(也可顺便添加 headers 参数)

10. 添加存储功能,保存到本地(Excel)。也可保存为 csv 格式或存入数据库,操作类似。

【四、总结】

1.爬取 QQ 音乐比爬取豆瓣等网站稍难,所需信息不在网页源代码,需查看 XHR;

2.通过 XHR 爬取数据一般要使用 json,格式为:

res =requests.get(url)
json =res.json()
list = json[‘’][‘’]

3.仅供练手参考,不建议爬取太多数据,给服务器增大负载;

4.Python 爬取 QQ 音乐数据(二)将为大家带来如何爬取指定歌曲的歌词及评论(selenium),并生成词云图(wordcloud),敬请期待。

5.需要本文源码的话,请在公众号后台回复“QQ音乐”四个字进行获取。

——————- End ——————-

往期精彩文章推荐:

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

在公众号后台回复下列关键词可以免费获取相应的学习资料:

Python、网络爬虫 、书籍、数据分析、机器学习、数据结构、

大数据、服务器、Spark、Redis、C++、C、php、

mysql、java、Android、面试题、课堂、其他

Python批量创建复工证明实现过程中的Bug汇总及其相应的解决方案

/1 前言/

上个星期的时候,小编给大家分享了手把手教你使用Python批量创建复工证明一文,事实证明,这篇文章真的很实用,没有来得及上车的小伙伴,现在上车也来得及噢。从反馈情况来看,很多小伙伴已经亲自去尝试了,达到了预期的效果。不过有部分小伙伴在实现过程中,却遇到了拦路虎,这里整理一下几个实现过程中的难点,以方便后面遇到相似问题的小伙伴,不再入坑。

 

/2 目标/

1.例举3个常见的问题,并给出相应的解决方案。

 

/3 问题一/

Q1:没有docx-mailmerge这个库。

如果没有这个库的话,直接运行小编分享的代码,会直接报错,如下图所示。

Python批量创建复工证明实现过程中的Bug汇总及其相应的解决方案

这个库平时我们比较难用到,所以一般在Python库里边是没有安装的,那么首先需要先安装这个库。关于为什么要安装docx-mailmerge库而不是mailmerge库的问题,一会儿请看问题二。

安装方法很简单,直接使用安装命令:

pip install docx-mailmerge

但是这个安装方法,有个弊端,那就是安装的时候,太慢了,部分小伙伴直接因为网速或者其他原因,压根儿就安装不上这个库。

Python批量创建复工证明实现过程中的Bug汇总及其相应的解决方案

Ans1:还记得那个换源的文章嘛?一共有两篇文章:手把手教你进行pip换源,让你的Python库下载嗖嗖的,手把手教你进行pip换源,让你的Python库下载嗖嗖的(系列二),使用镜像进行下载,让你的下载速度嗖嗖的,这里直接给出安装命令,如下所示。

pip install docx-mailmerge -i https://pypi.tuna.tsinghua.edu.cn/simple

如果你想日后安装库文件高枕无忧的话,可以戳那两篇文章,直接进行永久换源,操作也十分的简单,以后就不用担心库下载速度慢的问题。

 

/4 问题二/

Q2:在mailmerge这个库里边找不到MailMerge这个函数。

翻车现场如下图所示。

Python批量创建复工证明实现过程中的Bug汇总及其相应的解决方案

明明已经安装了mailmerge库,在代码里边进行导入,也可以高亮,但是竟然没有MailMeige这个函数,导致报错。这个问题,小编一开始实践的时候,也翻车了,后来在博客上了解到mailmerge库里边确实没有那个函数,其实根据pip安装的提示,也是建议安装docx-mailmerge库。

Python批量创建复工证明实现过程中的Bug汇总及其相应的解决方案

知道了这个,那么有的小伙伴就开始去安装docx-mailmerge库了,然后不小心又翻车了,运行程序发现还是报那个错误,真是气人。莫慌,下面给出解决方案。

Ans2:究其原因,是包名冲突了,所以导致这个问题的出现。从实践来看,应该要安装docx-mailmerge库,而不是mailmerge。解决方法也十分的简单,首先先卸载mailmerge库,使用命令:

pip uninstall mailmerge

如下图所示,即可把mailmerge库卸载掉。如果你还没有安装docx-mailmerge库的话,按照问题一的方法,去安装即可。

Python批量创建复工证明实现过程中的Bug汇总及其相应的解决方案

之后,你再次运行程序的话,你会发现一起正常了,如下图所示。

Python批量创建复工证明实现过程中的Bug汇总及其相应的解决方案

 

/5 问题三/

Q3:在找不到“模板”文件。

很多小伙伴在github上只是下载了代码文件,但是忘记下载那两个模板文件了,一个是“模板.docx”,一个是“模板.xlsx”。另外,即便是都下载下来了,但是忘记放在了同一个目录下,都会导致下图问题的发生。

Python批量创建复工证明实现过程中的Bug汇总及其相应的解决方案

Ans3: 解决方法很简单,将Python文件和两个模板文件放在同一个文件夹下就可以了,如下图所示。

Python批量创建复工证明实现过程中的Bug汇总及其相应的解决方案

之后再次运行代码的话,就不会出现那个问题了。

 

/6 总结/

1.本文就Python批量创建复工证明过程中遇到的问题,做一个小的bug总结和解决方案提供,实践证明,行之有效;

2.欢迎大家积极尝试,有问题请积极留言或者私信小编。有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻;

3.需要Python批量创建复工证明源码和模板的小伙伴,可以阅读这篇文章进行获取:手把手教你使用Python批量创建复工证明

——————- End ——————-

往期精彩文章推荐:

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

在公众号后台回复下列关键词可以免费获取相应的学习资料:

Python、网络爬虫 、书籍、数据分析、机器学习、数据结构、

大数据、服务器、Spark、Redis、C++、C、php、

mysql、java、Android、面试题、课堂、其他

手把手教你进行Pycharm活动模板配置

/1 前言/

嘿,各位小伙伴大家好,最近后台很多小伙伴加小编微信,说是想使用Pycharm,除了简单的安装Pycharm和设置Pycharm解释器之外,Python环境搭建—安利Python小白的Python和Pycharm安装详细教程,安装好Pycharm后如何配置Python解释器简易教程,有个活动模板配置,小编觉得也还是蛮重要的,这里整理出来给大家学习。如果想学习一些Pycharm的使用技巧,在后台的精选文章栏目里边有专门的文章系列,可以去学习一下的,

今天给小火煲们带来的干货是Pycharm活动模板配置,一起来看看吧~

 

/2 什么是活动模板/

话不多说,直接上图

活动模板配置.gif

很简单的一个示例,就是在pycharm中输入main关键字,会自动带出一些默认的代码,这个就是活动模板配置

可能有人会问,这个有什么用呢,我只能说,人因懒而伟大,本老鸟就是本着能少写代码就少写代码的态度,能懒则懒的态度,教各位小伙伴如何配置活动模板,偷出更多的懒,哈哈哈!

 

/3 配置活动模板步骤/

1. 点击pycharm左上角,打开settings,如下图所示。

2. 搜索 Live Template,如下图所示。

3. 选择python,如下图所示。

Look,我们常用的main快捷输入就是在这配置的,如下图所示。

4. 点击+号,选择Live Template

5. 配置活动模板

 

/4 示例效果/

配置活动模板呈现的效果如下所示:

ok示例.gif

 

/5 总结/

综上,简单的模板配置就这样完了,下面,我们来看一下它还能让我们有多懒,做web的我们都知道,python有名的web框架,Django,但是我们在写视图的时候,是FBV模式(函数对应url),但是实际中,我们为了代码更加健壮,一般都会使用CBV模式(类对应url),我们来看一下活动模板是否能给我们带来快捷。

cbv.gif

是不是比以前稍微快了点,不用写request了,不用写args了,对吧!

好了,今天干货就到这了,至于怎么玩活动模板,全靠小伙伴发挥了噢。

——————- End ——————-

往期精彩文章推荐:

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

在公众号后台回复下列关键词可以免费获取相应的学习资料:

Python、网络爬虫 、书籍、数据分析、机器学习、数据结构、

大数据、服务器、Spark、Redis、C++、C、php、

mysql、java、Android、面试题、课堂、其他

教你一招另辟蹊径抓取美团火锅数据

最近有个小伙伴在群里问美团数据怎么获取,而且她只要火锅数据,她在上海,只要求抓上海美团火锅的数据,而且要求也不高,只要100条,想做个简单的分析,相关的字段如下图所示。

教你一招另辟蹊径抓取美团火锅数据

乍一看,这个问题还真的是蛮难的,毕竟美团也不是那么好抓,什么验证码,模拟登陆等一大堆拂面而来,吓得小伙伴都倒地了。

教你一招另辟蹊径抓取美团火锅数据

通过F12查看,抓包,分析URL,找规律,等等操作。

教你一招另辟蹊径抓取美团火锅数据

不过白慌,今天小编给大家介绍一个小技巧,另辟蹊径去搞定美团的数据,这里需要用到抓包工具Fiddler。讲道理,之前我开始接触网络爬虫的时候也没有听过这个东东,后来就慢慢知道了,而且它真的蛮实用的,建议大家都能学会用它。这个工具专门用于抓包,而且其安装包也非常小,如下图所示。

教你一招另辟蹊径抓取美团火锅数据

接下来,我们开始进行抓取信息。

1、在Fiddler的左侧找到meituan网站的链接,如下图所示。链接的左边返回的response(响应)的文件类型,可以看到是JSON文件,尔后双击这一行链接。

教你一招另辟蹊径抓取美团火锅数据

2、此时在右侧会显示下图的界面,点击黄色区域内的那串英文“Responsebody is encoded. Click to decode.”意思是response是加密的,点击此处进行解码,对返回的网页进行解码。

教你一招另辟蹊径抓取美团火锅数据

3、此时会弹出下图所示的界面,在WebView中可以看到返回的数据,与网页中的内容对应一致。

教你一招另辟蹊径抓取美团火锅数据

4、不过美团网限制一页最多显示32条火锅信息,如下图所示。

教你一招另辟蹊径抓取美团火锅数据

5、如果我想获取100条信息的话,那得前后找4页,才能够满足要求。有没有办法让其一次性多显示一些数据呢?答案是可以的,操作方法如下。

在左侧找到对应的美团网链接,然后点击右键一次选择CopyàJustUrl,如下图所示。

教你一招另辟蹊径抓取美团火锅数据

7、将得到的URL放到浏览器中去进行访问,如下图所示。可以看到limit=32,即代表可以获取到32条相关的火锅信息,并且返回的内容和Fiddler抓包工具返回的信息是一致的。

教你一招另辟蹊径抓取美团火锅数据

8、此时,我们直接在浏览器中将limit=32这个参数改为limit=100,也就是说将32更改为100,让其一次性返回100条火锅数据,天助我也,竟然可以一次性访问到,如下图所示。就这样,轻轻松松的拿到了一百条数据。

教你一招另辟蹊径抓取美团火锅数据

9、接下来,可以将浏览器返回的数据进行Ctrl+A全部选中,放到一个本地文件中去,存为txt格式,在sublime中打开,如下图所示。

教你一招另辟蹊径抓取美团火锅数据

10、其实乍一看觉得很乱,其实它就是一个JSON文件,剩下的工作就是对这个JSON文件做字符串的提取,写个代码,提取我们的目标信息,包括店门、星级、评论数、关键词、地址、人均消费等,如下图所示。

教你一招另辟蹊径抓取美团火锅数据

11、运行程序之后,我们会得到一个txt文件,列与列之间以制表符分开,如下图所示。

教你一招另辟蹊径抓取美团火锅数据

12、在txt文件中看上去很是费劲,将其导入到Excel文件中去,就清晰多了,如下图所示。接下来就可以很方便的对数据做分析什么的了。

教你一招另辟蹊径抓取美团火锅数据

13、至此,抓取美团火锅数据的简易方法就介绍到这里了,希望小伙伴们都可以学会,以后抓取类似的数据就不用找他人帮你写程序啦~~

14、关于本文涉及的部分代码,小编已经上传到github了,后台回复【美团火锅】四个字即可获取。

——————- End ——————-

往期精彩文章推荐:

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

在公众号后台回复下列关键词可以免费获取相应的学习资料:

Python、网络爬虫 、书籍、数据分析、机器学习、数据结构、

大数据、服务器、Spark、Redis、C++、C、php、

mysql、java、Android、面试题、课堂、其他

手把手教你进行pip换源,让你的Python库下载嗖嗖的(系列一)

/1 前言/

今天我们来说说python的pip换源吧,这个换源,相对来说,还是比较重要的,能让自己少生好几次气的,哈哈哈!

 

/2 为什么要换源/

我们搞python的,肯定离不开各种各样的第三方包,比如爬虫,有requests,xpath,爬虫界的扛把子Scrapy;Web有django,flask,restframework啥的,还是挺多的,我们一般安装的方式都是pip install xx模块,但是我相信,你们肯定都遇到过这种情况。

手把手教你进行pip换源,让你的Python库下载嗖嗖的

可以看到,我们安装的过程非常慢,可能都是几k几k的过,但是我们的网速最起码有5m/s吧,这就比较不开心了,最恶心的是,安装的慢就算了,可能安装这安装着,直接error了,嗯…哭吧

还有一种情况是什么呢,就是这种,直接飘黄,警告,然后,就没有然后了,直接凉了,…悲惨

手把手教你进行pip换源,让你的Python库下载嗖嗖的

但是造成这种原因是什么呢,就是因为我们获取的包,默认是直接从pypi官网获取的,因为pypi国外的,本来网速就慢,再加上我们国家会限制一些国外不正常的网站,可能会存在误杀,所以,我们直接从pypi官网获取包的时候,难免会各种凉,尤其是大一点的包,更凉

但是呢,我们不用担心,我们国家不缺少热血青年,总有一些大佬为我们开路,让我们少踩点坑,

虽然官网的pypi慢,但是大佬们为了照顾我们的情绪,专门开发了国内站点,内容和官网的pypi一模一样,但是他的服务器在国内,而且速度非常快

只要我们将pip默认的下载源换成国内源,我们在pip安装时,就是从国内获取了,速度绝对杠杠的,而且包质量没问题,国内站点会隔一段时间同步一次,基本不用担心获取的包有问题,美滋滋,感谢大佬。

 

/3 源列表/

这里呢,我们先把现有的国内源贴出来,如下图所示:手把手教你进行pip换源,让你的Python库下载嗖嗖的  一般就是这5个,一般情况下,我用的是清华大学的源,因为第一次用的就是清华源,然后就先入为主了。

这里呢,也就以清华源举例,默认win平台。

 

/4 换源步骤/

1、首先,打开c盘,找到用户这个文件夹,如下图所示。手把手教你进行pip换源,让你的Python库下载嗖嗖的

2、有的可能不是用户,xp的话可能是administrator。

手把手教你进行pip换源,让你的Python库下载嗖嗖的

3、但是没关系,win7+之后的系统,一般c盘下都有一个叫用户或者Users的文件夹,点进入之后选择自己的系统用户名并且进入这个文件夹就好了。

手把手教你进行pip换源,让你的Python库下载嗖嗖的

4、就像下图这样。

手把手教你进行pip换源,让你的Python库下载嗖嗖的

5、但是其实它是下图这样子的。

手把手教你进行pip换源,让你的Python库下载嗖嗖的

6、简而言之,就是一定要切换到用户目录下就好了,用户目录下一定会有这个。

手把手教你进行pip换源,让你的Python库下载嗖嗖的

Win10显示打的是桌面,win7应该是Desktop,如果有这个,那就说明,恭喜你,你的位置没问题。

这个确定好之后呢,剩下就简单了。

7、首先呢,创建一个叫pip的文件夹,就像下图这样。

手把手教你进行pip换源,让你的Python库下载嗖嗖的

8、进入这个文件夹,创建一个pip.ini文件。

手把手教你进行pip换源,让你的Python库下载嗖嗖的

9、好嘞,编辑文件,内容如下图所示。

手把手教你进行pip换源,让你的Python库下载嗖嗖的

10、然后,保存就好了,重新打开cmd,再安装时,速度嗖嗖的。

手把手教你进行pip换源,让你的Python库下载嗖嗖的

Look,不错吧,直接1.6MB/s,真香!

好了,到这,python pip永久换源,就说完了,希望各位小伙伴好好学习,继续坚持。

 

/5 小结/

这篇文章主要讲述了pip永久换源的重要性和具体操作步骤,行文比较基础,并且行之有效,大家可以尝试一下。文章中提及的这种方法呢,是永久换源,但是如果你没有永久换源,就想临时用一下,需要执行这样的命令即可:pip install scrapy-i
https://pypi.tuna.tsinghua.edu.cn/simple,其实就是后面加上 -i参数 + 国内地址,也可以达到一样的效果。

——————- End ——————-

往期精彩文章推荐:

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

在公众号后台回复下列关键词可以免费获取相应的学习资料:

Python、网络爬虫 、书籍、数据分析、机器学习、数据结构、

大数据、服务器、Spark、Redis、C++、C、php、

mysql、java、Android、面试题、课堂、其他