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,则直接输出会乱码

# Python 3 & 爬虫一些记录的更多相关文章

  1. python之爬虫学习记录与心得

    之前在寒假的时候,学习了python基础.在慕课网上看的python入门:http://www.imooc.com/learn/177 python进阶:http://www.imooc.com/le ...

  2. Python简单爬虫记录

    为了避免自己忘了Python的爬虫相关知识和流程,下面简单的记录一下爬虫的基本要求和编程问题!! 简单了解了一下,爬虫的方法很多,我简单的使用了已经做好的库requests来获取网页信息和Beauti ...

  3. Python爬虫学习记录【内附代码、详细步骤】

    引言: 昨天在网易云课堂自学了<Python网络爬虫实战>,视频链接 老师讲的很清晰,跟着实践一遍就能掌握爬虫基础了,强烈推荐! 另外,在网上看到一位学友整理的课程记录,非常详细,可以优先 ...

  4. Python爬虫个人记录(三)爬取妹子图

    这此教程可能会比较简洁,具体细节可参考我的第一篇教程: Python爬虫个人记录(一)豆瓣250 Python爬虫个人记录(二)fishc爬虫 一.目的分析 获取煎蛋妹子图并下载 http://jan ...

  5. Python爬虫个人记录(二) 获取fishc 课件下载链接

    参考: Python爬虫个人记录(一)豆瓣250 (2017.9.6更新,通过cookie模拟登陆方法,已成功实现下载文件功能!!) 一.目的分析 获取http://bbs.fishc.com/for ...

  6. Python爬虫实践 -- 记录我的第二只爬虫

    1.爬虫基本原理 我们爬取中国电影最受欢迎的影片<红海行动>的相关信息.其实,爬虫获取网页信息和人工获取信息,原理基本是一致的. 人工操作步骤: 1. 获取电影信息的页面 2. 定位(找到 ...

  7. python网络爬虫学习笔记

    python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...

  8. 第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门搜索

    第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门 我的搜素简单实现原理我们可以用js来实现,首先用js获取到 ...

  9. 第三百六十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)倒排索引

    第三百六十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)倒排索引 倒排索引 倒排索引源于实际应用中需要根据属性的值来查找记录.这种索引表中的每一项都包 ...

随机推荐

  1. 利用Python构建时间序列模型解决实际问题的正确姿势

    要本着应用到实际工作中目的去学时间序列分析,才能深入浅出的学会,不要纠结于理论,只听我的,我有信心说明白. 本章内容 趋势分析 序列分解 序列预测 序列分解 统计学基础铺垫 划分 时间序列按照季节性划 ...

  2. 处理flutter http请求添加application/json报错Cannot set the body fields of a Request with content-type “application/json”

    在flutter中在http请求发送时设置"content-type": "application/json"会出现报错Cannot set the body ...

  3. NUnit -- Test discovery or execution might not work for this project

    [7/31/2019 2:06:58.100 PM Warning] No test matches the given testcase filter `FullyQualifiedName=Sil ...

  4. js手写数组Api--模拟实现常见数组Api

    数组的API经常用,但是api的内部实现还没研究过,于是就研究学习了下. 原文地址: https://www.cnblogs.com/yalong/p/11606865.html 数组的API的具体使 ...

  5. Ubuntu防火墙常用命令

    Ubuntu默认防火墙安装.启用.配置.端口.查看状态相关信息 最简单的一个操作: sudo ufw status(如果你是root,则去掉sudo,ufw status)可检查防火墙的状态,我的返回 ...

  6. Java 泛型,你了解类型擦除吗?

    泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇.泛型是 Java 中一个很小巧的概念,但 ...

  7. R语言与概率统计(三) 多元统计分析(上)

    > #############6.2一元线性回归分析 > x<-c(0.10,0.11,0.12,0.13,0.14,0.15,0.16,0.17,0.18,0.20,0.21,0. ...

  8. Python排序之多属性排序

    1.sort函数说明: sort函数是list类的一个方法,说明如下: sort(...)L.sort(cmp=None, key=None, reverse=False) -- stable sor ...

  9. MySQL数据库的库表迁移

    最近在研究MySQL数据库的库表迁移问题,主要分为两种情况,一种情况是迁移数据库的表的全部字段,另一种是迁移数据库的表的部分字段.前一种情况是直接使用mysqldump命令来实现,后一种情况则是采用数 ...

  10. Linux(centos)安装vim

    当在Linux环境下使用vim提示: vim command not found时,说明系统还没有安装vim. 安装步骤: 1.检查是否已安装 查看一下你本机已经存在的包,确认一下你的VIM是否已经安 ...