Python爬虫基础-Requests

您好,我是沧沧凉凉,是一名前端开发者,目前在掘金知乎以及个人博客上同步发表一些学习前端时遇到的趣事和知识,欢迎关注。


这一个月的时间我重新学习了Python相关的知识,逐渐发现Python这门语言之所以这么火,完全得力于它的语法简单,以及他拥有庞大的第三方库。

在机器学习方面,Python拥有sklearn等库,当然Python不仅能够做机器学习,还能够处理数据,尤其是pandas库,简直是数据清洗的神器,清洗完毕后还可以输出json、csv等文件格式,甚至还可以输出位表格。

现在说到爬虫,第一个想到的就是Python,说到web测试,第一个想到的就是Selenium,不得不说,Python能做各种事情,就算你不打算从事上面的这些工作,学习Python也会大大的提高工作效率。

比如说作为一个前端开发者,在调试接口的时候往往会需要一些数据,而这些数据你手动添加的时候往往就是脸滚键盘,如果有些表单比较复杂,需要填的数据比较多,就算脸滚键盘也要花上几十秒的时间,因为往往一条数据可能不仅在当前页面用到,还会在其它界面用到,如果你调试其它用到该数据的界面,你就会反复回来创建数据。

这个时候可以使用Python的Faker库,直接大量创建一些假数据,当然,如果你实在不想学习Python也可以使用js的faker.js库,该库在Node端和浏览器端都是可以使用的,同时下载量也非常高,但是正如我在前端开发中的接口数据模拟以及快速调试接口文章中所说,使用Python的Faker库可以创建更加真实的数据。

基本使用

Faker库使用起来几乎没有什么成本,下面是一些可能会常用的一些功能:

要想使用,得先实例化一个类:

from faker import Faker
fake = Faker("zh_CN")

下面的代码中会有Faker.seed(0),这是一个随机种子,你给一个相同的种子就会得到同样的结果,如果你不写这句,则会得到一个随机的结果。

姓名

姓:last_name()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.last_name()
...
'顾'
'廖'
'周'
'刘'
'林'

女性名:first_name_female()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.first_name_female()
...
'丽娟'
'雪梅'
'丽'
'琴'
'荣'

男性名:first_name_male()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.first_name_male()
...
'楠'
'帆'
'坤'
'建平'
'旭'

姓名:name()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.name()
...
'廖婷婷'
'刘凤兰'
'赵莉'
'黄红霞'
'陈帆'

岗位

job()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.job()
...
'列车/地铁车长'
'纸样师/车板工'
'行政主厨/厨师长'
'其他语种翻译'
'物流/仓储'

公司

公司名:company()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.company()
...
'万迅电脑科技有限公司'
'太极传媒有限公司'
'恩悌传媒有限公司'
'四通网络有限公司'
'凌颖信息网络有限公司'

公司前缀:company_prefix()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.company_prefix()
...
'新宇龙信息'
'万迅电脑'
'济南亿次元'
'天开'
'太极'

公司后缀:company_suffix()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.company_suffix()
...
'传媒有限公司'
'传媒有限公司'
'科技有限公司'
'信息有限公司'
'传媒有限公司'

地址

省:province()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.province()
...
'云南省'
'甘肃省'
'天津市'
'湖南省'
'香港特别行政区'

市:city()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.city()
...
'婷婷市'
'凤兰县'
'莉县'
'红霞市'
'成市'

区:district()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.district()
...
'高明'
'大兴'
'兴山'
'沈北新'
'璧山'

具体地址:address()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.address()
...
'甘肃省澳门县崇文黄街s座 319489'
'河北省北镇县东丽陈街C座 108016'
'贵州省兴城市南长武汉路f座 587148'
'贵州省太原县滨城梁路m座 209471'
'辽宁省兰州县梁平南昌路C座 851591'

街道地址:street_address()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.street_address()
...
'王路Y座'
'黄街s座'
'香港街g座'
'马街B座'
'潮州路d座'

邮箱

普通邮箱:email(domain=None)

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.email()
...
'qcheng@hotmail.com'
'eliu@yahoo.com'
'ligao@guiyingxiuying.cn'
'guiying15@xie.cn'
'xiuying38@yahoo.com'

免费邮箱:free_email()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.free_email()
...
'cshao@yahoo.com'
'yqiu@yahoo.com'
'lmo@gmail.com'
'ligao@gmail.com'
'xia92@yahoo.com'

公司邮箱:company_email()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.company_email()
...
'cshao@wei.cn'
'tao59@gi.cn'
'yilei@yanyao.com'
'guiying15@xie.cn'
'nlu@huangxiao.cn'

号码

手机号码:phone_number()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.phone_number()
...
'18066048764'
'18859382421'
'14548924115'
'18881565938'
'18878408016'

手机号前缀:phonenumber_prefix()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.phonenumber_prefix()
...
180
159
145
181
182

IP

IPV4:ipv4(network=False, address_class=None, private=None)

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.ipv4()
...
'171.174.170.81'
'95.25.112.121'
'51.105.121.194'
'195.110.164.126'
'141.250.247.54'

IPV4局域网:ipv4_private(network=False, address_class=None)

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.ipv4()
...
'171.174.170.81'
'95.25.112.121'
'51.105.121.194'
'195.110.164.126'
'141.250.247.54'

IPV4公网:ipv4_public(network=False, address_class=None)

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.ipv4_public()
...
'166.186.169.69'
'111.198.92.30'
'168.155.75.206'
'141.250.247.54'
'212.120.204.37'

IPV6:ipv6(network=False)

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.ipv6()
...
'e3e7:682:c209:4cac:629f:6fbf:d82c:7cd'
'f728:b4fa:4248:5e3a:a5d:2f35:6baa:9455'
'eb11:67b3:67a9:c378:7c65:c1e6:82e2:e662'
'f7c1:bd87:4da5:e709:d471:3d61:c8a7:639'
'e443:df78:9558:867f:5ba9:1fb0:7a02:4204'

mac地址:mac_address()

>>> Faker.seed(0)
>>> for _ in range(5):
...     fake.mac_address()
...
'c5:d7:14:84:f8:cf'
'9b:f4:b7:6f:47:90'
'47:30:80:4b:9e:32'
'25:a9:f1:33:b5:de'
'a1:68:f4:e2:85:1f'

自定义

对接口请求

最后

使用Faker制造假数据是一件非常方便的事情,虽然这些数据测试也能够帮你添加,但是人与人之间交流是有成本的,而且有些公司的测试水平不高,他也只会手动添加数据,甚至有些公司没有测试。所以学会自己制造假数据也对前端开发中有一个非常大的效率提升。还是那句话:只有提高效率才能够摸鱼,有时间摸鱼才有时间学习,有时间学习你才会有更大的发展空间。