我的python入门心得

我的python入门心得

背景介绍,为什么是python

​ 我大概半年前开始业余时间学的,本身大学学的也是软件,虽然没接触过python,但我觉得应该学习成本也不高。去菜鸟教程看了下,http://www.runoob.com/python3/python3-tutorial.html。掌握一些基本东西就可以。学习时间大概3小时。
数据类型:string,int,list,元组,字典,集合等。
条件控制:if else > = < 之类的
循环语句:for while
模块: import 包
函数:def xxxx():
文件:输入输出
以上就是我所认为的基础了,我觉得只要掌握了这些就可以开始了
print(“hello world!”)
为什么要学习python,一是我觉得程序真的可以非常便利我们的生活工作,二是智能化时代,掌握编程,挺有乐趣而且,用来爬数据真是挺方便。

​ 首先,我用的是windows 7 / linux系统都有用,老电脑,装pycharm运行速度慢,常常吃不住。我这里用的是sublime text 3,可以网上搜:python3 sublime text 3 ,有很多大神帮你度过这个关。安装python3.6,这里不做说明,有很多教程了。

爬虫需要掌握的内容

​ 今天想了下,初步入门爬虫需要掌握的内容就像图示,没有排名,爬虫和反爬虫估计都会相爱相杀到永远吧

这里写图片描述

​ 目前我用到的大概这么多内容。万事俱备,准备开爬

程序流程

​ 我认为写程序是是爬虫的第三步,最重要的是!==定义问题== ,只有定义了你需要的内容,才好去搜索,去找需要的网页,根据网页的内容,编写程序,所以大概流程是这样:

​ 定义问题—>寻找需要的网页—>分析网页结构(反爬等)—->程序1.0—>循环测试—>获取结果—>保存结果

如何分析网页结构?

​ 浏览器我建议用firedox,chrome等知名浏览器哈,我自己用的是oprea,道理大同小异。下面我直接==6v电影网==为例子,打开网站后,在页面内==鼠标右键—>检查元素==,看到以下内容:

这里写图片描述

左下角就是html标签代码,上面部分就是页面展示的效果,如果需要获取复仇者联盟3:无限战争的网址,就需要获得 href="http...."的内容,可以用正则匹配出来,也可以用beautifullySoup模块来做。具体问题,具体搜索分析。流程大概差不多如下。反正获得结果之后,print(),试试看有什么内容。
from bs4 import BeautifulSoup
import re
resp = requests.get(weather)
wea_list = BeautifulSoup(resp.text, 'html.parser')
ulist = wea_list.find_all('a', href=re.compile("nanning/month/"))

​ 我一般将正则和beautifulSoup结合一起用。把get到的内容,先做正则测试,看能否匹配到需要的信息,可以去http://www.bejson.com/othertools/regex/。例如

这里写图片描述

​ 目前我需要的数据量,用这点内容也差不多可以满足了,遇到动态加载的就非常困难了,试过用selenium模块,但是效率挺低,而且老电脑经常time out,程序退出。这是我下一步要加强去强化的技能之一吧。

​ 当然,寻找json数据结构的结果,我觉得是最完美的,有一次模拟登录公司的APP,把所有客户数据全部导出来了,刚好数据结构是json。

js_dic = json.loads(result)
#js_dic是字典结构的,根据["index"]读取内容就可以了

​ selenium模块试过爬淘宝100页的内容,偶尔还是会出现timeout,准备继续用来爬ajax的,或者通过fiddler 软件进行调试,这又是另一个话题了,可以搜索看到很多这方面的教程。

Requests库基础知识

import requests
url= '目标网址'
response = requests.get(url)
print(response.status_code)  # 打印状态码
print(response.url)          # 打印请求url
print(response.headers)      # 打印头信息
print(response.cookies)      # 打印cookie信息
print(response.text)  #以文本形式打印网页源码
print(response.content) #以字节流形式打印

​ 这就是最简单的了,对响应内容进行处理,requests.get()方法会返回一个Response对象r,我们可以根据该对象的一些属性来获取请求的结果,解析网页内容。

headers = {'Accept': 'text/html, application/xhtml+xml, image/jxr, */*',
               'Accept - Encoding':'gzip, deflate',
               'Accept-Language':'zh-Hans-CN, zh-Hans; q=0.5',
               'Connection':'Keep-Alive',
               'Host':'www.baidu.com',
               'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063'}
 response = requests.get('http://www.baidu.com',headers=headers)

​ 有的网站是需要自定义头部信息才能访问的,而且头部内容需要根据情况而定,如果get不到想要的内容,请看下代码给出的结果,比如status_code,状态码去搜索相关答案,相信我,这个过程你会遇到非常多的问题,也会成长很快。实战是成长最快的方式。

数据储存

​ 数据储存我一般用csv格式,因为方便我用wps打开,写入的格式如下,大同小异。

    csv_f = open("weather.csv", "a+", newline='') #打开一个文件
    writer = csv.writer(csv_f) 
    writer.writerow(['month', 'weather', 'temperature', 'fengli'])
    for url in url_list:
        result = get_weather_detail(url)
        for re in result:
            writer.writerow(re)
            print(re)
    csv_f.close()

最后

​ 到这里,基本上把之前遇到的模块都复盘了下,我的学习方式其实就几个字:实战,搜索,再实战。不断的尝试,建议每一个成型的代码都做保存,可以复用哦

猜你喜欢

转载自blog.csdn.net/weixin_42866931/article/details/81367888