python的学习总结和爬虫

python的学习终于告一段落了,从最开始只是听别人说python如何好如何强大,到自己亲自去学习去体会的感觉是不同的。
相较于C语言来说使用python写一个程序要方便许多,对于同一个问题,C语言可能要写很多代码,但用python可能就只需要几行就能解决。
我感觉在python中最要注意的就是缩进,在C语言中对这并没有很严格的要求,但在python中却很重要,虽然有点麻烦,但是能够使代码看起来更加美观,阅读起来也更好。
对于计算很大的数据在C语言中可能需要一大串的代码进行计算,而在python中只需要输入你需要计算的数据就行,而且运行速度也很快。

print(21434675764*334367678)
结果:7167062763891555992

python中的列表使用起来也是非常方便的虽然和C语言中的数组有点相似但要比那好用很多。
在列表中可以使用正整数正着访问列表中的某个元素也可以使用负数倒着访问列表中的某个元素。可以使用list.append(obj)函数在末尾添加元素,也可以使用list.insert(index,obj)来插入对象,使用list.pop(index)可以删除任意一个你想删除的一个元素,而且还可以在使用这个元素。使用sort()还可以对元素进行排序。除此以外列表中还有很多其他好用的函数和方法(可以自己在网上或书上查一下),使用这些函数和方法可以更好的帮助我们处理列表问题。
切片在python中也是能够经常用到的,print(list[num1:num2])从第一个数开始到最后一个数的前一个值停止。通过切片我们能够更加灵活的应用列表中的元素而且还可以通过切片来复制列表。
对于一些不想被修改的元素,元组的出现则满足了这个需求,如果想要修改里面的元素只能重新定义元素。
不管是列表还是元组我们都可以使用for循环来遍历其中的各个元素,而使用切片则可以让我们遍历其中的部分元素。

magicians = ['alice', 'david', 'carolina']
for magician in magicians:
    print(magician.title() + ", that was a great trick!")
    print("I can't wait to see your next trick, " + magician.title() + ".\n")

if条件语句和while循环语句其实和学过的C语言中的差不多,只是在使用方法上有点不同,只要有一个解题思路就可以使用的很好。
字典在python中可以说是一个很重要的一部分内容了,而且字典也是一个很常用的部分。使用字典可以存储一个人或者对象的信息。我们可以输出字典名来打印整个字典alien_0 = {'color': 'green', 'points': 5} print(alien_0) 键-值对则是里面要储存的信息,例如’color’就是键,'green’就是值。
我们可以使用这种方法for key, value in user_0.items():来遍历字典中的所有的键-对值,使用for name in favorite_languages.keys():可以用来访问键,使用这种语句可以用来访问值for language in favorite_languages.values(): 。python中的函数和模块使用起来也比C语言中的简单一些。
python中很多语法用起来特别方便,因为这些语法所以对于一些很复杂的问题用python写可能就会很简单。

python爬虫

爬虫主要分为以下几个流程。
(1)发起请求:通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,然后等待服务器响应。
(2)获取响应内容:如果服务器能正常响应,我们会得到一个Response,Response的内容便是所要获取的内容,类型可能有HTML、Json字符串,二进制数据(图片,视频等)等类型。
(3)解析内容:得到的内容可能是HTML,可以使用正则表达式,网页解析库进行解析。也可能是Json,可以直接转为Json对象解析。可能是二进制数据,可以做保存或者进一步处理。
(4)保存数据:保存的方式可以是把数据存为文本,也可以把数据保存到数据库,或者保存为特定的jpg,mp4 等格式的文件。

Request

浏览器发送信息给该网址所在的服务器,这个过程就叫做HTTP Request。
request中包含以下就几个方面:(1)请求方式:请求方式的主要类型是GET,OST两种,另外还有HEAD、PUT、DELETE等。(2)请求 URL:URL 全称是统一资源定位符,也就是我们说的网址。(3)请求头(Request Headers):请求头包含请求时的头部信息,如User-Agent(指定浏览器的请求头),Host,Cookies等信息。(4)请求体:请求体是请求是额外携带的数据,比如登录表单提交的登录信息数据。

Response

服务器收到浏览器发送的信息后,能够根据浏览器发送信息的内容,做出相应的处理,然后把消息回传给浏览器,这个过程就叫做HTTP Response。
Response包含:(1)响应状态:有多种响应状态,比如200代表成功,301 跳转页面,404 表示找不到页面,502 表示服务器错误。
(2)响应头(Response Headers):比如内容类型,内容长度,服务器信息,设置Cookie等。
(3)响应体:响应体最主要的部分,包含了请求资源的内容,比如网页 HTML 代码,图片二进制数据等。

解析方式

直接处理,比如简单的页面文档,只要去除一些空格的数据;
Json解析,处理Ajax加载的页面;
正则表达式;
BeautifulSoup库;
PyQuery;
XPath。

Requests的基本用法

requests库可以实现网络的请求,当我们要使用requests库时需要先下载安装requests库可以到这个https://pypi.org/project/pip/#files链接下载pip然后在 windows 系统下,只需要输入命令 pip install requests ,即可安装。卸载时,用 pip uninstall +模块名称 命令来删除。
在这里插入图片描述
######GET请求
get请求是最经常用到的。
下面是爬取京东上的一个商品,在这要使用处理异常的try-except语句这样能很好交互界面。

import requests
url="https://item.jd.com/100000822955.html#crumb-wrap"
try:
    r=requests.get(url)
    r.raise_for_status()
    r.encoding=r.apparent_encoding
    print(r.text[:1000])
except:
    print('爬取失败')

在这里插入图片描述

添加headers

有些网页如果我们直接去请求的话,他会查看请求的对象是不是浏览器,如果没有浏览器信息就会禁止我们爬虫的访问,这个时候我们就要给爬虫加一个headers,加一个浏览器的user-agent信息。这样我们就可以正常访问了。如果有的伙伴不知道怎么得到User-Agent,可以打开浏览器的审查元素,找到network,随便点击一个链接就可以看到User-Agent的信息了。

import requests
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
resp = requests.get('http://www.baidu.com', headers=headers)
print(resp.text)

在这里插入图片描述

基本POST请求

一个POST必然是要有一个Form Data的表单提交的,我们只要把信息传给data参数就可以了。一个POST请求只需要调用post方法,是不是特别方便呢。如果不觉得方便的话,可以去参考urllib的使用方法。

import requests
data = {
    'name': 'jack',
    'age': 20
}
resp = requests.post('https://item.jd.com/100000822955.html#crumb-wrap', data=data)
print(resp.text)

在这里插入图片描述

BeautifulSoup

Python的网页解析可以用正则表达式去完成,那么我们在写的时候,要挨个的去把代码拿出来匹配,而且还要写匹配的规则,整体实现起来就很复杂。BeautifulSoup呢,它是一个方便的网页解析库,处理高效,支持多种解析器。大部分情况下,利用它我们不在需要编写正则表达式就可以方便的实现网页信息的提取。有了它我们可以很方便地提取出HTML或XML标签中的内容。
这里要先安装BeautifulSoup。也是在命令提示符里输入pip install BeautifulSoup4即可安装。这是安装好之后的。
在这里插入图片描述
下面可以测试一下是否安装好。

import requests
r=requests.get("https://item.jd.com/100000822955.html#crumb-wrap")
demo=r.text
from bs4 import BeautifulSoup
soup=BeautifulSoup(demo,"html.parser")
print(soup.prettify())#prettify()它的作用就是使解析出来的html程序“每逢标签,自动换行”可以对程序起到很好的作用辅助

在这里插入图片描述reresponse对象的属性
r.status_code HTTP请求的返回状态,200表示连接成功,404表示失败
r.text HTTP响应内容的字符串形式,即,url对应的页面内容
r.encoding 从HTTP header中猜测的响应内容编码方式
r.apparent_encoding 从内容分析出的响应内容编码方式(备选编码方式)
r.content HTTP响应内容的二进制形式

爬虫实例

1、亚马逊网站上的一个实例。

import requests
url="https://www.amazon.com/?&_encoding=UTF8&tag=cehome-pc-20&linkCode=ur2&linkId=52ac446f154b6503a59db834ef2f46c9&camp=1789&creative=9325"
try:
    kv={'User-Agent':'Mozilla/5.0'}
    r=requests.get(url,headers=kv)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text[:2000])
except:
    print("爬取失败")

2、爬取并保存一张图片

import requests
#import os
path="d:\林彦俊\lin.jpg"#前面是文件名,后面是要保存的文件名
url="https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2609008107,1150527409&fm=26&gp=0.jpg"
r=requests.get(url)
with open(path, 'wb') as f:
    f.write(r.content)
    f.close()
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值