一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
简历模板
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
下面是一个简单的例子,和上面urllib示例代码实现的功能相同,但是代码量少多了,也更易读。
print('--------------使用requests--------------')
response = requests.get('https://www.google.com', headers=headers, proxies=proxies)
response.encoding = 'utf8'
print(response.text)
requests还可以方便的发送表单数据,模拟用户登录。返回的Response对象还包含了状态码、header、raw、cookies等很多有用的信息。
data = {
'name': 'yitian',
'age': 22,
'friends': ['zhang3', 'li4']
}
response = requests.post('http://httpbin.org/post', data=data)
pprint(response.__dict__)
print(response.text)
关于requests我就不多做介绍了,因为它有中文文档,虽然比官方落后几个小版本号,不过无伤大雅,大家可以放心参阅。
http://cn.python-requests.org/zh_CN/latest/
beautifulsoup
利用前面介绍的requests类库,我们可以轻易地获取HTML代码,但是为了从HTML中找到所需的数据,我们还需要HTML/XML解析库,BeautifulSoup就是这么一个常用的库。首先先来安装它:
pip install beautifulsoup4
这次就用我简书主页作为例子,爬取一下我简书的文章列表。首先先用requests获取到网页内容。
from pprint import pprint
import bs4
import requests
headers = {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0'
}
url = 'https://www.jianshu.com/u/7753478e1554'
response = requests.get(url, headers=headers)
然后就是BeautifulSoup的代码了。在使用BeautifulSoup的时候首先需要创建一个HTML树,然后从树中查找节点。BeautifulSoup主要有两种查找节点的办法,第一种是使用find和find_all方法,第二种方法是使用select方法用css选择器。拿到节点之后,用contents去获取它的子节点,如果子节点是文本,就会拿到文本值,注意这个属性返回的是列表,所以要加[0]。
html = bs4.BeautifulSoup(response.text, features='lxml')
note_list = html.find_all('ul', class_='note-list', limit=1)[0]
for a in note_list.select('li>div.content>a.title'):
title = a.contents[0]
link = f'https://www.jianshu.com{a["href"]}'
print(f'《{title}》,{link}')
BeautifulSoup也有中文文档,同样也是稍微落后两个小版本,影响不大。
https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/
requests-html
这个类库是requests的兄弟,同样也是Kenneth Reitz大神的作品。它将请求网页和解析网页结合到了一起。本来如果你用requests的话只能请求网页,为了解析网页还得使用BeautifulSoup这样的解析库。现在只需要requests-html一个库就可以办到。
首先先来安装。
pip install requests-html
然后我们来看看用requests-html如何重写上面这个例子。
from requests_html import HTMLSession
from pprint import pprint
url = 'https://www.jianshu.com/u/7753478e1554'
headers = {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0'
}
session = HTMLSession()
r = session.get(url, headers=headers)
note_list = r.html.find('ul.note-list', first=True)
for a in note_list.find('li>div.content>a.title'):
title = a.text
link = f'https://www.jianshu.com{a.attrs["href"]}'
print(f'《{title}》,{link}')
requests-html除了可以使用css选择器来搜索以外,还可以使用xpath来查找。
for a in r.html.xpath('//ul[@class="note-list"]/li/div[@class="content"]/a[@class="title"]'):
title = a.text
link = f'https://www.jianshu.com{a.attrs["href"]}'
print(f'《{title}》,{link}')
requests-html还有一个很有用的特性就是浏览器渲染。有些网页是异步加载的,直接用爬虫去爬只能得到一个空页面,因为数据是靠浏览器运行JS脚本异步加载的,这时候就需要浏览器渲染了。而浏览器渲染用requests-html做非常简单,只要多调用一个render函数即可。render函数有两个参数,分别指定页面下滑次数和暂停时间。render函数第一次运行的时候,requests-html会下载一个chromium浏览器,然后用它渲染页面。
简书的个人文章页面也是一个异步加载的例子,默认只会显示最近几篇文章,通过浏览器渲染模拟页面下滑,我们可以得到所有文章列表。
session = HTMLSession()
r = session.get(url, headers=headers)
# render函数指示requests-html用chromium浏览器渲染页面
r.html.render(scrolldown=50, sleep=0.2)
for a in r.html.xpath('//ul[@class="note-list"]/li/div[@class="content"]/a[@class="title"]'):
title = a.text
link = f'https://www.jianshu.com{a.attrs["href"]}'
print(f'《{title}》,{link}')
类似的,今日头条的个人页面也是异步加载的,所以也得调用render函数。
from requests_html import HTMLSession
headers = {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0'
}
session = HTMLSession()
r = session.get('https://www.toutiao.com/c/user/6662330738/#mid=1620400303194116', headers=headers)
r.html.render()
for i in r.html.find('div.rbox-inner a'):
title = i.text
link = f'https://www.toutiao.com{i.attrs["href"]}'
print(f'《{title}》 {link}')
最后是requests-html的官网地址以及中文文档。
https://html.python-requests.org/
https://cncert.github.io/requests-html-doc-cn/#/?id=requests-html
scrapy
以上介绍的几个框架都是各自有各自的作用,把它们结合起来可以达到编写爬虫的目的,但是要说专业的爬虫框架,还是得谈谈scrapy。作为一个著名的爬虫框架,scrapy将爬虫模型框架化和模块化,利用scrapy,我们可以迅速生成功能强大的爬虫。
不过scrapy概念众多,要仔细说还得专门开篇文章,这里就只简单演示一下。首先安装scrapy,如果是Windows系统,还需要安装pypiwin32。
pip install scrapy
pip install pypiwin32
然后创建scrapy项目并添加一个新爬虫。
scrapy startproject myproject
cd myproject
scrapy genspider my jianshu.com
打开配置文件settings.py,设置用户代理,否则会遇到403错误。
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0'
然后修改一下爬虫。
最后
不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~
给大家准备的学习资料包括但不限于:
Python 环境、pycharm编辑器/永久激活/翻译插件
python 零基础视频教程
Python 界面开发实战教程
Python 爬虫实战教程
Python 数据分析实战教程
python 游戏开发实战教程
Python 电子书100本
Python 学习路线规划
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!