爬虫学习记录(一)

0.基础知识

  • 网络爬虫
    • 爬虫,即网络爬虫,可以简单的理解为,行走在互联网这张网上的爬虫, 你可以通过爬虫来抓取你在这张网上你想要的资源
  • 浏览网页的过程
    • 我们平时浏览网页就是在浏览器输入网址,然后网页就显示了出来,其实这些页面的实质 是由HTML代码构成的,而我们浏览的过程就是,输入网址,然后经过DNS服务器,找到服务器 主机,向服务器发出一个请求,服务器经过解析之后,就会给我们的浏览器发送HTML等等文件, 然后再经过浏览器的解析,就是我们所看到的的了
    • 而我们爬虫爬取的也正是这些文件,我们通过分析和过滤这些HTML代码,实现对所需要资源
      的获取
  • URL的含义
    • URL(统一资源定位符),也就是我们平时说的网址,是互联网上标准资源的地址。互联网上 每个文件都对应着唯一的URL

1.初次尝试

了解玩一些基本的知识后,我先用下面的代码爬写网页试试

#python3版本
from urllib.request import urlopen
url = "http://www.baidu.com"
reponse = urlopen(url)
print(reponse.read())

运行了以后,简直坑,一大段天书,不过没事,这才是开始,我慢慢学。

2.了解代码

from urllib.request import urlopen

首先这里是导入库,因为我们要调用urllib.requestl里的urlopen方法,urlopen这个方法,这个方法顾名思义url和open,所以他就是拿来open url的。

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

目前只知道的是一定要传入url这个参数

3.改进代码

构造Request,这段代码运行结果和第一段代码是完全一致的

from urllib.request import urlopen
from urllib.request import Request

url = "http://www.baidu.com"
#推荐这么写,因为构建请求的时候还需要加入好多内容
request = Request(url) 
reponse = urlopen(request)
print(str(reponse.read(),'utf-8')) #输出的字符串编码有点问题,所以转换了编码

4.POST和GET数据传送

通过上面两段代码可以爬取已经可以爬取好一些网站了(虽然还没有实质作用),但是如果遇到像比如说要登录的才能爬取的网页呢。所以在访问时,我们需要传递一些数据给它,也就是上面说的构建请求了,数据传递的方式分为POST和GET两种
+ POST方式:

#coding:utf-8

from urllib.request import Request
from urllib.request import urlopen
from urllib.parse import urlencode

url = "http://www.example.com"
values = {
    "username" : "richie",
    "password" : "123456"
}

data = urlencode(values)
data = data.encode('utf-8')

# post 方法
request = Request(url,data)
response = urlopen(request)
print(str(response.read(),'utf-8'))
  • GET方式:
#coding:utf-8

from urllib.request import Request
from urllib.request import urlopen
from urllib.parse import urlencode

url = "http://www.example.com"
values = {
    "username" : "richie",
    "password" : "123456"
}

data = urlencode(values)
# GET方法
get_url = url + "?" + data # http://www.example.com?username=richie&password=123456
request = Request(get_url)
response = urlopen(request)
print(str(response.read(),'utf-8'))

通过这两段代码可以看出他们之间明显的区别:
GET方法是直接把参数写到网址上面,直接构建一个带参数的URL出来,而post方法就不是

参考于:静觅 » Python爬虫入门

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值