Python 3 & 爬虫一些记录


  • Python任何数据都看成一个“对象”,变量指向数据对象,对变量赋值就是把数据和变量给关联起来。
  • Python的整数没有大小限制浮点数也没有大小限制,但是超出一定范围就直接表示为inf(无限大)。
  • ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符
  • ASCII只能表示英文和某些符号1字节,UniCode可以表示所有国家的语言2字节,ASCII前面加上一个字节的0就是Unicode,对于全英文文本使用Unicode浪费空间。
  • 解决方案:UTF-8智能编码,英文编码成1字节,汉字编码成3字节。。。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间

交互模式和命令行模式

  • 打开终端就进入了命令行模式
  • 命令行模式下可以输入Python3 进入Python3 的交互模式,也可以Python 1.py运行.py文件
  • 交互模式下只能输入一行代码,然后运行一行代码,并自动 打印结果输出(相当于启动了Python解释器,输入一行,执行一行),执行.py文件只能在命令行模式下
  • 命令行模式下下会自动把每一行代码结果打印出来,也就是命令行下默认最后加上print语句。但是直接运行python代码不会

函数积累

print中 r'' 表示里面的字符默认不转义

多行字符串'''...'''表示法,可以结合r一起使用,r'''...'''表示多行字符串不转义
print('''a
b
c''')
>>> a
b
c strip()去除前后空格 lstrip()去除前面空格 rstrip()去除后面空格 str.title()首字母大写 str.upper()/lowwer()全字母大小写 str(int_name) int数据转化为字符串 字符串连接直接使用 + ,整数和字符串不能直接连接,整数强制
转化为字符串str(int)+"str"; 数组使用[]括起来,直接打印数组会将方括号和引号逗号一起打印出来,下标访问。 数组a.[-1]返回倒数第一个元素,-2倒数第二个,依次类推 append(),pop(index)可以弹出指定位置的元素,del(a[0]),insert(1,x);
remove(元素)删除第一个匹配的
len(list) :获取数组长度 ** 代表^幂符号 列表切片
print(a[1:3])输出指定位置的元素
a=values[1:3]使用切片能复制列表
a=values直接使用等号使两个列表指向同一个对象

语法积累

  • python里面根据缩进判断两行语句之间的关系,for循环没有大括号,:作为for的起始,4个空格缩进表示属于for循环的语句。

列表和元组

  • 列表可变,元组不可变,不能修改元组部分值,但是可以给元组重新赋值
  • 元组是特殊的列表,列表使用[],元组使用()
  • 将列表名作为条件表达式时,取的是列表的长度
  • 元组的不变是 “指向不变”,如果元组某元素指向了一个列表,列表元素可变,即使列表元素变了,元组的指向也没有改变
if(list):
do something //if list is not null,do something

输入

input(str):输入函数,接受一个参数,在输入前打印,将用户读入解读为字符串,使用int()函数转换

交互模式下输入多行

  • 代码后面添加;\

爬虫

HTTP报文请求头User-Agent信息

  • 格式:Mozilla/5.0 (平台) 引擎版本 浏览器版本号
  • 其中平台可以是操作系统或者python库,一般爬虫请求HTTP报文默认显示平台为Python库

解析库pyquery

#巨坑:!!!!!!
doc=pq(url,parser='html')#最好指定解析器为HTML,默认为xml,碰到XHTML网页会解析出错 # 创建PyQuery对象(css选择器)
from pyquery import PyQuery as pq #从库中导入PyQuery类并且定义别名为pq # 可以使用''''''来表示字符串,这种表示方法可以接受换行
html='''
<div id="container">
<ul class="list">
<li class='item-0'>first item </li>
<li class='item-1'><a href="link2.html">second item< </li>
<li class ='item-a active'><a href="link3.html">< span class ="bold"> third item </span></a></li>
<li class ="item-1 active"><a href ="link4.html"〉fourth item</a></li>
<li class ="item-0"><a href= "link5.html"> fifth item</a></li>
</ul>
</div>
''' doc =pq(url='http://www.baidu.com') #doc为PyQuery对象
# doc=pq(filename='demo.html')从文件中创建pq对象 # 元素选择,''中位css选择器
print(doc('li')) #选择出所有的li标签,并且所有<li> </li>标签的内容加上li标签打印 # 选择器的结果也是pq对象
print(type(doc('li'))) # 更高级的元素选择
print(doc('#container .lisr li'))# id标签#表示后面跟id名,class使用.表示后接名字,空格分隔
# 可以直接在''css选择器中使用空格分隔实现嵌套选择,无空格表示并列查询
r=requests.get(url) #访问网页,获取网页内容

r.encoding #获取当前对象的编码

rencoding='utf-8'  #使当前对象转化为utf-8形式,如果网页是utf-8,而当前对象不是utf-8,则直接输出会乱码

最新文章

  1. Android笔记——提升ListView的运行效率
  2. Kindeditor 代码审计
  3. 基础学习day08---多态、简单工厂、Object类equals和toString
  4. .net求两个数的最大公约数和最小公倍数
  5. Android学习手记(6) TabActivity和TabHost
  6. JS 没有块级作用域
  7. json对象和json字符串转换方法
  8. 解决IE8下VS2005,VS2008一些向导提示脚本错误问题
  9. [ACM] POJ 2253 Frogger (最短路径变形,每条通路中的最长边的最小值)
  10. hdoj 3555 Bomb(DFA+dp)
  11. 什么是dtd文件,为什么需要
  12. DateTable转化为泛型集合
  13. 关于Java的静态:静态类、静态方法、静态变量、静态块等
  14. linux环境下安装redis扩展
  15. bzoj 2627: JZPKIL [伯努利数 Pollard-rho]
  16. Jmeter(二十四)_服务器性能监控
  17. Linux 内存池【转】
  18. M - Pots
  19. bash编程-Shell基础
  20. ajax 拼接html标签 thinkphp

热门文章

  1. 用javascript来判别回文数
  2. 8. 使用Zuul构建微服务网关
  3. IDEA checkout Git 分支 弹出 Git Checkout Problem
  4. Leetcode题目169.求众数(简单)
  5. IntelliJ IDEA 2017.3 搭建一个多模块的springboot项目(一)
  6. Android网络编程之——文件断点下载
  7. Go项目的测试代码3(测试替身Test Double)
  8. easyUI之函数
  9. Linux文档中翻页和搜索关键字
  10. 深入解析d3弦图