python学习心得(一)

人生苦短,我用python。看到python有那么多开放的库,短短几行代码就能搞定一个项目,有点面向对象的经验确实很容易学习。

1、 语法基础

语法我是跟着廖雪峰老师的官网走了一遍,廖老师的python网站
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
对于非0基础的同学,看看他的高级特性里面的切片,迭代,生成器,高阶函数,闭包,装饰器就差不多了。
python主要是用各种包,包括多线程,异步io,网络编程,gui编程都有各自的包,用到的时候去学就行了。

2、 项目练习

我学python最主要是对爬虫跟数据处理感兴趣,所以学习爬虫项目。我是跟着脑海中的项目擦的项目学习的,他目前正在更新爬虫100例的课程。课程地址:
https://cloud.tencent.com/developer/column/74376
橡皮擦的课程爬的都是一些比较主流的网站,估计怕侵权问题,有不少项目都没有上传完整的代码到git,所以一开始要完全实现功能需要动一些脑经,建议私信跟博主多交流,一定要自己先写。

3、 项目过程中的一些心得

橡皮擦的爬虫课可能对版本有一些前后不一致的地方。python这玩意用的就是新,所以不建议按照他的版本(python3.5+mongodb),因为3.5版本对后面的一些库是不支持的,所以建议用新的,橡皮擦后面用到的一些库都是python3.6之后支持的,mongodb对没有数据库经验的同学也不友好。
我的环境是

C:\Users\liufeng>pip3 -V
pip 10.0.1 from d:\python3.7\lib\site-packages\pip (python 3.7)

C:\Users\liufeng>python
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

不是最高的,但是至少保证后续pip一些包都不会出现不支持的现象
另外mongodb是非关系型数据库,数据存入简单,但是数据可视化或者取用对初学者相当不友好,建议使用mysql,对应的python包是pymysql。

4、 一些常用的包及模式化用法

对于网络爬虫来说,原理相当简单。无非就是爬取页面,解析html找到规则,获取想要的信息,进行数据分析。
爬取页面常用requests,对于需要登录的页面获取用selenuim模拟登录,对于异步用aiohttp,一些模式化的代码。
异步io获取到页面的标准写法

    async def get(self,url):
        async with aiohttp.ClientSession() as session:
            try:
                async with session.get(url,headers=self.__headers,timeout=3) as res:
                    if res.status==200:
                        #将获取到的页面转化成text保存
                        result=await res.text()
                        return result
            except Exception as e:
                print(e.args)

异步任务开启的标准写法

    def run(self):
        loop=asyncio.get_event_loop()
        tasks=[self.parse_html(page) for page in range(1,10)]
        loop.run_until_complete(asyncio.wait(tasks))

请求根据网站用get和post,对付反爬,常用的伪装代理包

from fake_useragent import UserAgent
ua = UserAgent(use_cache_server=False) #注意如果没有括号内内容会报错

获取到html后要定位自己需要的页面代码,常用lxml(要学习xpath语法),json包,也要用到正则模块,对于正则不熟悉或者平常工作不处理数据的工程师有一个非常友好的网站:
http://txt2re.com
填入要分析的字符串,选中需要获取的字符串,然后点击show match,再选择语法,就帮你把所有的正则都写好了。
数据保存用到数据库,保存为cvs用pandas
mysql数据存储

import pymysql
#连接本地test数据库
db=pymysql.connect(host="localhost",user="root",
 	password="123456",db="test",port=3307)

#使用cursor()方法创建一个游标对象
cursor = db.cursor()

#使用execute()方法执行SQL语句
cursor.execute("SELECT * FROM userinfo")

#使用fetall()获取全部数据
data = cursor.fetchall()

#打印获取到的数据
print(data)

#关闭游标和数据库的连接
cursor.close()
db.close()

mongodb存储

import pymongo
DATABASE_IP='127.0.0.1'
DATABASE_PORT=27017
DATABASE_NAME='sun'
client = pymongo.MongoClient(DATABASE_IP,DATABASE_PORT)
db=client.sun #此处数据库sun要先在mongodb里面建好
db.authenticate("dba","dba")
collection=db.href #插入数据集合,名称可以任意
db.collection.insert_many(data,ordered=False)  #data构造好后,插入操作

pandas保存为本地cvs

import pandas as pd 
data=pd.DataFrame(all_data) #构造好all_data后协程数据帧
data.to_cvs("filename",encoding='utf_8_sig') #将数据写入文件

获取图片链接后保存图片

 try:
     response = requests.get(pic_url,headers=headers)
     with open(filename,'wb') as f:
          f.write(response.content)
          f.close()
 except Exception as e:
     print(e)
     pass

写了这么多,其实,抓图才是我学爬的第一动力!!!!!!!!!!!!
最后心得,爬虫很简单,但是一定要在wifi下跑代码,否则伤钱!!!!!!!!
爬虫,抓图才是最快乐的!
我会持续更新这一块的学习心得,要感谢橡皮擦老师!!!!!!!

猜你喜欢

转载自blog.csdn.net/weixin_40983190/article/details/88566044