记录初学Python的坑-----python3.7.3版本

先记录一下 idea安装Python的语言支持插件后的操作:我用的是windows环境、windows环境、windows环境

首先 下载 Anaconda3 的可执行文件  下载地址

然后安装,安装过程中有一个环节,默认打了一个勾,把上面的配置环境变量也勾上,然后一路next

借图说明下:

安装完成后,打开cms  输入 :conda info --env 查看下环境,默认只有一个base;

下面那个py37是后来建的,创建命令conda create -n py37

删除环境谨慎执行:conda remove -n py37

激活环境:activate base

关闭环境:deactivate base

激活后,就可以起飞了。

惯例:helloworld

#!/usr/bin/python3
print(‘hello world‘)

1,

报错原因:

TypeError: can’t use a string pattern on a bytes-like object.

html用decode(‘utf-8’)进行解码,由bytes变成string。

py3的urlopen返回的不是string是bytes。
解决:

html = html.decode(‘utf-8‘)

2.

报错原因:

如果用 urllib.request.urlopen 方式打开一个URL,服务器端只会收到一个单纯的对于该页面访问的请求,但是服务器并不知道发送这个请求使用的浏览器,操作系统,硬件平台等信息,而缺失这些信息的请求往往都是非正常的访问,例如爬虫.

有些网站为了防止这种非正常的访问,会验证请求信息中的UserAgent(它的信息包括硬件平台、系统软件、应用软件和用户个人偏好),如果UserAgent存在异常或者是不存在,那么这次请求将会被拒绝(如上错误信息所示)

所以可以尝试在请求中加入UserAgent的信息
解决:

def getHtml(url):

    u = urllib.request.URLopener() # Python 3: urllib.request.URLOpener
    u.addheaders = []
    u.addheader( ‘Accept‘, ‘*/*‘)
    u.addheader(‘Accept-Language‘,‘en-US,en;q=0.8‘)
    u.addheader( ‘Cache-Control‘, ‘max-age=0‘)
    u.addheader( ‘User-Agent‘, ‘Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36‘)
    u.addheader( ‘Connection‘, ‘keep-alive‘)
    u.addheader( ‘Referer‘, ‘http://www.baidu.com/‘)

    page=u.open(url)
    html = page.read()
    html = html.decode(‘utf-8‘,"ignore")
    page.close()
    return html

3.在一个py文件中,引入另一个py文件,直接import即可

4.用python3版本,引入request的下载函数 urlretrieve时候,可以这么做,举一反三,可以减少代码量

from  urllib.request import urlretrieve
urlretrieve(url,filename)

5.在获取对象Html时,即使加了decode(‘utf-8‘),也仍旧报错:

‘utf-8‘ codec can‘t decode byte 0xd7 in position 309: invalid continuation byte

解决方法:decode(‘utf-8‘,‘ignore‘)

6.int 型变量 index  转 str类型---->str(index)

相反:str类型变量 string 转int类型 -----> int(str)       --------10进制下

7.显示下载进度

def Schedule(a,b,c):    per = 100.0 * a * b / c    if per>100:        per = 100        print(‘完成!‘)    print(‘%.2f%%‘ % per)
urlretrieve(fileUrl,fileName,Schedule)

效果如下:

8记录一个爬网址图片,然后创建文件夹存图片的操作

# coding:utf-8
import requests
from bs4 import BeautifulSoup
import os
# 创建一个文件夹名称
FileName = ‘mm‘
def dd():
    if not os.path.exists(os.path.join(os.getcwd(), FileName)):     # 新建文件夹
        os.mkdir(os.path.join(os.getcwd(),FileName))
        print(u‘建了一个名字叫做‘, FileName, u‘的文件夹!‘)
    else:
        print(u‘名字叫做‘, FileName, u‘的文件夹已经存在了!‘)
    url = ‘http://www.xiaohuar.com/list-1-1.html‘
    html = requests.get(url).content    # 返回html
    # html = html.decode(‘utf-8‘)
    soup  = BeautifulSoup(html,‘html.parser‘)   # BeautifulSoup对象
    jpg_data = soup.find_all(‘img‘,width="210") # 找到图片信息
    index = 1
    for i in jpg_data:
        deindex = str(index) +  "a"
        data = i[‘src‘] # 图片的URL
        print("图片url为"+data)
        if "https://www.dxsabc.com/" not in data:
            data = ‘http://www.xiaohuar.com‘+data
        r2 = requests.get(data)
        fpath = os.path.join(FileName,deindex)
        with open(fpath+‘.jpg‘,‘wb+‘)as f : # 循环写入图片
            f.write(r2.content)
        index += 1
    print(‘保存成功,快去查看图片吧!!‘)

if __name__== ‘__main__‘:
    dd()

9记录一个爬网址的shtml下的文章,然后创建文件夹存文件的操作

还在弄,持续更新中。。。

原文地址:https://www.cnblogs.com/justtodo/p/11175245.html

时间: 2024-11-05 20:36:47

记录初学Python的坑-----python3.7.3版本的相关文章

【初学python】错误SSLError: [Errno 1] _ssl.c:504:的解决记录

最近在实习公司学习使用python做web自动化测试,其中使用到httplib这个模板,主要用于与待测试界面建立HTTP连接,发送数据请求,接收请求状态码和查询数据,验证功能.但是新版本的web界面改成使用https协议,原来的测试用例都变成无法跑通的状态. 将协议从HTTP改成HTTPS后,报以下错误: SSLError: [Errno 1] _ssl.c:504: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown proto

初学Python,版本如何选择?

早在四年多以前,在我进入英才网之前,去面试过一家海归创业的公司.他们需要的是有unix开发经验的技术人员,但是因为他们当时所处的阶段对很多成熟 技术人员不是很吸引,所以条件放宽为熟悉面向对象的程序开发即可考虑.我当时草草看过过一遍C#的语法,当时的水平对一门新语言的掌握速度远不如现在,因 此也仅学到点皮毛,对于很多概念都不了解,比如重载和重写就不知道.我第一次听说Python这个语言,就是在那次面试. 当时面试官在了解了我的情况之后,问我都掌握一些什么语言.我说我会什么什么(在这里不好意思列举)

初学Python(二)

-----------------------------------------------------2019.3.5-00:59-------------------------------------------- 写完第一篇随笔,第二天就准备好了要写的素材,只可惜忙忙碌碌到现在才有充足精力来写,坚持就是胜利!闲言碎语不多讲,直接进入正题——再次记录一些Python的"与众不同"之处: 1.许多编程语言都用大括号来表示循环.条件等的作用域,而在Python里是没有的,只需要用适

初学 Python(十一)——切片

初学 Python(十一)--切片 初学 Python,主要整理一些学习到的知识点,这次是切片. #-*- coding:utf-8 -*- ''''' 切片 ''' L = ['name','age','sex','address','company'] #取前2个 print L[0:2] print L[:2] #取倒数第一个 print L[-1] #取后两个 print L[-2:] #取倒数第二个 print L[-2:-1] print len(L) #隔一个数取一次,从第一个数开

初学 Python(十三)——匿名函数

初学 Python,主要整理一些学习到的知识点,这次是匿名函数. # -*- coding:utf-8 -*- #关键字lambda定义的函数都是匿名函数 #做对象 f = lambda x,y:x+y print f(1,2) #做参 print reduce(lambda x,y:x+y,[1,2,3,4,5,6]) #做返回值 def build(x,y): return lambda:x*x+y*y g = build(1,2) print g print g()

初学Python

初学Python 1.Python初识 life is short you need python--龟叔名言 Python是一种简洁优美语法接近自然语言的一种全栈开发语言,由"龟叔"编写开发一种易学易懂高效的语言. Python提供丰富的接口和模块,便于使用其他语言细化,性能提升对要求较高的软件. 以上简单描述了一下Python语言的优点,缺点我就不写了,因为不需要对比,强大的语言自会解决现在几个劣势. 针对于初学者版本选择的问题,因为现在国内大多数在使用2.X版本,个人建议使用3.

初学Python(九)——函数

初学Python(九)--函数 初学Python,主要整理一些学习到的知识点,这次是函数. 函数定义: # -*- coding:utf-8 -*- #函数的定义 def my_function(x): if x>0: return x elif x<0: return -x else: pass #函数的调用 a = my_function(-1) b = my_function(2) c = my_function(0) print a,b,c #空函数,pass为占位符 def empt

初学 Python(十四)——生成器

初学 Python(十四)--生成器 初学 Python,主要整理一些学习到的知识点,这次是生成器. # -*- coding:utf-8 -*- ''''' 生成式的作用: 减少内存占有,不用一次性 创建list中所有的元素,而 是在需要的时候创建 ''' #创建generator有2种方式 #第一种将列表表达式中的[]改为()即可 g = (x*x for x in range(10)) print g for n in g: print n #第二种,关键字yield def fab(ma

初学 Python(十二)——高阶函数

初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 称为高阶函数 ''' #函数作参 def f(x): return x*x #map函数为内置函数,意思为将第二个参数的list作用到f函数中 #最后的结果为一个list print map(f,[1,2,3,4,5]) #reduce函数为内置函数,意思将第二参数的序列作用到add函数值 #将结