Python爬虫解析(新手快速入门

一、爬虫介绍

网络爬虫又称网络蜘蛛、网络机器人,是指按照某种规则在网络上爬取所需内容的脚本程序。每个网页通常包含其他网页的入口和大量信息,网络爬虫则是进入网页,定位获取所需内容。

爬虫可以划分为以下三步:

  1. 爬取网页
  2. 解析数据
  3. 保存数据

其中最重要的应该是解析数据这部分,因为这部分编写对应的代码来定位html内容,从而获取我们想要爬取的数据。爬取部分可以通过urllib模块进行获取网页的html代码。保存数据,主要有两种方法,一种是直接保存进Excel,另一种是更面向系统,保存进数据库。我学习的过程使用的是SQLite数据库引擎,小型,方便。特别是运用Pycharm中dataset工具包,使得数据库运用起来是十分的方便。


二、爬取网页

平常登入浏览器上网,最频繁使用的两种请求是get请求和post请求。get请求输入的数据是直接显示在url上,安全性不够。post请求数据是不显示在url上,安全性比较高。(就比如输入密码,是直接在网页上输入,而不是写入url中)

下面代码是get和post请求和返回响应

httpbin.org是一个专门用于爬虫测试的网站

get请求

import urllib.request
response = urllib.request.urlopen('http://httpbin.org/get')
print(response.read().decode('utf-8'))

#响应内容
{
   
  "args": {
   }, 
  "headers": {
   
    "Accept-Encoding": "identity", 
    "Host": "httpbin.org", 
    "User-Agent": "Python-urllib/3.9", 
    "X-Amzn-Trace-Id": "Root=1-61f3ef09-6616eeab295d5103700d9757"
  }, 
  "origin": "112.50.41.143", 
  "url": "http://httpbin.org/get"
}

post请求

data = bytes(urllib.parse.urlencode({
   "hellow":"world"}), encoding='utf-8')
response = urllib.request.urlopen('http://httpbin.org/post', data=data)
print(response.read().decode('utf-8'))

#响应内容
{
   
  "args": {
   }, 
  "data": "", 
  "files": {
   }, 
  "form": {
   
    "hellow": "world"
  }, 
  "headers": {
   
    "Accept-Encoding": "identity", 
    "Content-Length": "12", 
    "Content-Type": "application/x-www-form-urlencoded", 
    "Host": "httpbin.org", 
    "User-Agent": "Python-urllib/3.9", 
    "X-Amzn-Trace-Id": "Root=1-61f3f1af-3c727e890ee174572c7b86fd"
  }, 
  "json": null, 
  "origin": "112.50.41.143", 
  "url": "http://httpbin.org/post"
}

从上面的响应headers中,可以发现User-Agent的内容是Python-urllib/3.9,说明服务器端知道我们访问的环境,也就是说服务器知道我们在爬虫,对于一些设有安全性的网页会拒绝我们访问。

假如我们通过上述方式正常访问豆瓣网页,会发现出现了如下418警告。

response = urllib.request.urlopen(r'https://movie.douban.com')
print(response.read().decode('utf-8'))

#警告
urllib.error.HTTPError: HTTP Error 418:

那么是不是说明设有安全性的网页就没法访问了,显然,大佬们如此智慧,肯定是有办法解决的。

通过代码伪装浏览器访问头,成功爬取。消息头headers的内容可以通过打开浏览器按F12键,随便点击一个get或post请求,查看消息头即可。以下以火狐浏览器截图为例:
在这里插入图片描述

伪装浏览器头消息代码如下:

url = r'https://movie.douban.com'
headers = {
   
    'User-Agent': r'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.9 Safari/537.36',
    'Cookie': 'bid=7mM480uOFCo; dbcl2="252912187:UtqLjbzdBdY"; ck=6DJI; _pk_ref.100001.4cf6=["","",1642433569,"https://accounts.douban.com/"]; _pk_ses.100001.4cf6=*; __utma=30149280.116081932.1642433569.1642433569.1642433569.1; __utmc=30149280; __utmz=30149280.1642433569.1.1.utmcsr=accounts.douban.com|utmccn=(referral)|utmcmd=referral|utmcct=/; __utmz=223695111.1642433569.1.1.utmcsr=accounts.douban.com|utmccn=(referral)|utmcmd=referral|utmcct=/; __utmc=223695111; __utmb=223695111.0.10.1642433569; __utma=223695111.1563560722.1642433569.1642433569.1642433569.1; __gads=ID=c847fa157ddd2521-2202472700d0001e:T=1642433572:RT=1642433572:S=ALNI_Ma_fS0aJS2enPjG0sgam_fOP8ZAfA; push_doumail_num=0; push_noty_num=0; __utmt=1; __utmv=30149280.25291; __utmb=30149280.2.10.1642433569; _pk_id.100001.4cf6=b998428814f5d240.1642433569.1.1642434417.1642433569.; Hm_lvt_eaa57ca47dacb4ad4f5a257001a3457c=1642433569,1642433596,1642434417; Hm_lpvt_eaa57ca47dacb4ad4f5a257001a3457c=1642434417'
}

req = urllib.request.Request(url=url, headers=headers)
response = urllib.request.urlopen(req)
print(response.read().decode('utf-8'
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值