Python 网络爬虫第一讲

Python 网络爬虫第一讲

爬虫,就是按照一定的规则,自动的从网络中抓取信息的程序或者脚本。其实万维网就像一个巨大的蜘蛛网,我们的爬虫就是上面的一个蜘蛛,不断的去抓取我们需要的信息。所以,很明显,我们在学习爬虫的时候肯定要先学习,Python与互联网的通讯。

在Python2版本中,有urllib和urlib2两个库可以用来实现request的发送。而在Python3中,已经不存在urllib2这个库了,统一为urllib。

urllib四大模块

  • urllib.request可以用来发送request和获取request的结果
  • urllib.error包含了urllib.request产生的异常
  • urllib.parse用来解析和处理URL
  • urllib.robotparse用来解析页面的robots.txt文件

urllib.request发送请求

import urllib.request as u
# 向百度发起请求
res = u.urlopen("https://www.baidu.com")
#read()方法的返回值是乱码的,而且没有排版
html= res.read()
print(html)
#转换为utf-8格式之后就变为可读的有排版的html
print(html.decode("utf-8"))

Python 网络代理

由于爬虫技术能够给网站服务器带来很大的压力,所以很多网站都有反爬虫措施,我们在做爬虫的过程中经常会遇到这样的情况:爬虫在刚开始没有任何问题,然而运行一段时间之后会出现报错,比如403 Forbidden;出现这样的原因往往是网站采取了一些反爬虫的措施,比如,服务器会检测某个IP在单位时间内的请求次数,如果超过了某个阈值,那么服务器会直接拒绝服务,返回一些错误信息。这时候,代理就派上用场了。

使用步骤

  1. 参数是一个字典{“类型”:“代理IP:端口号”}

proxy_support = urllib.request.ProxyHandler({})

  1. 创建定制一个opener

opener = urllib.request.build_opener(proxy_support)

  1. 安装opener或者调用opener

    • 安装opener

    install_opener(opener) 安装opener作为urlopen()使用的全局URL opener,即意味着以后调用urlopen()时都会使用安装的opener对象。

    urllib.request.install_opener(opener)

    • 调用opener

    opener.open(url) 调用opener访问指定地址,以后调用urlopen()时还是本机默认的opener对象

    opener.open(url)

demo

import urllib.request
import random
#访问这个网址可以检测当前访问的ip
url="http://httpbin.org/get"

#所有代理的列表
iplist =["163.125.250.185:8118","27.188.65.244:8060","121.8.146.99:8060"]
#取出一个代理
ip =random.choice(iplist)
print(ip)
proxy_support = urllib.request.ProxyHandler({"http":ip})
opener = urllib.request.build_opener(proxy_support)
opener.addheaders=[("user-agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36")]
re = opener.open(url)
html = re.read().decode("utf-8")
print(html)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

司军礼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值