美文网首页Python练习程序员
12_爬虫阶段性总结

12_爬虫阶段性总结

作者: 过桥 | 来源:发表于2017-10-30 17:18 被阅读24次

简述

本节将针对以往 Python 爬虫示例中遇到的问题进行分享

常用插件说明

# 当前使用 Python 版本为 3.5
import requests                         #核心请求模块
from bs4 import BeautifulSoup           #抓取内容解析
import re                               #正则表达式
import time, os                         #时间、操作系统接口
import datetime                         #日期时间
import pymssql                          #MS SQL Server数据库 
import pymongo                          #MongoDB数据库
import json                             #Json解析
import crypto                           #解密加密
import execjs                           #运行JavaScript

思路分析

1、明确目标
分析目标能提供哪些数据,自己需要哪些数据,使用Excel构建出目标数据结构
2、数据加载方式
分析目标数据以何种形式加载,以便确定抓取后解析方式JsonBeautifulSoup,是否需要递归翻页等
3、代码实现
通过request模块,实现数据抓取,期间可能涉及cookiesheaders、密钥模拟等问题,不断解决完善即可;选择合适模块解析数据;实现入库存储

问题总结

问题一、crypto 使用、部署,提示Json未定义、缺少标识符、字符串或数字

出现以上问题可能为被调用JavaScript中有未被运行环境兼容的语法,建议先查看运行环境版本,若比较早期版本则直接安装node.js

#查看运行环境版本命令
>>> execjs.get().name
'Node.js (V8)'
问题二、requests请求后返回类型不一

需要针对返回不同数据,选择合适解析方式

#常用
r = requests.get(url)
r.content               #字节
r.text                  #字符串
r.json()                #Json格式
#其他
r.status_code           #响应状态码
r.headers               #响应头
r.cookies.get_dict()    #cookies获取
问题三、返回数据解析异常

因无法确定所有内容格式完全一致,需使用各种方式捕获解析异常,例如typelen、三元比较符

# type
        if type(dist_aqi) == dict: #其他无法解析类型
            print(dist_aqi["error"])
        else:
            parse_html_aqi(dist_aqi)
# 三元比较符
aqi = city_air_quality["aqi"]  if 'aqi' in city_air_quality else ''
问题四、因数据量大,检查是否已重复数据耗时

实际抓取过程中,检查是否重复操作响应时间随数据量增长而增加,建议设计表时就建立合适索引

问题五、程序其他原因崩溃

实际抓取过程中程序可能因重重原因崩溃,建议不断记录异常,不断添加异常处理,处理结束后,休息片刻,自动调用合适程序段继续抓取

其他

抓取中涉及模拟cookiesheaderstimeout等,本质上最理想的抓取程序都是尽力模拟真实请求,而与之对立,作为数据提供方 / 发布方也会有对应反爬措施。
为了世界和平,作为抓取方,尽量通过正规API获取数据,必须模拟抓取时,请设置适当请求间隔时间;作为数据方,编写完整的API,秘密数据不放互联网。
最后说明,尊重数据提供方发布的爬虫协议,该协议为根目录下·robots.txt·文件

示例,知乎爬虫协议:https://www.zhihu.com/robots.txt

相关文章

  • 12_爬虫阶段性总结

    简述 本节将针对以往 Python 爬虫示例中遇到的问题进行分享 常用插件说明 思路分析 1、明确目标分析目标能提...

  • 2022.6.24(晴)

    今天值班。歌咏比赛。12_

  • 资料

    Python爬虫系列(一)初期学习爬虫的拾遗与总结(11.4更) Python爬虫学习系列教程 Python爬虫学习手册

  • 小小分布式爬虫从架构到实现(一)

    做了一年多的爬虫相关工作了,来总结总结工作吧。 爬虫,是这样开始的…… 首先,为啥要做这个爬虫呢?因为公司在做大数...

  • 爬虫

    总结爬虫流程:爬取--->解析--->存储什么是爬虫?请求网站并提取数据的自动化程序就叫做爬虫。爬虫的主要目的?是...

  • jq用python爬虫抓站的一些技巧总结

    用python爬虫抓站的一些技巧总结 原文出处: observer 累积不少爬虫抓站的经验,在此总结一下,那么...

  • 今日要事

    1.晚上青椒助教召开阶段性总结腾讯会议,主要分学科组,县区组与综合组总结了近期阶段性问题。我们学科组静琦老师主讲了...

  • Python爬虫基础教程(三)

    九、多线程爬虫 9.1利用多线程爬虫爬取糗事百科的资源: 十、爬虫代码总结: 要实现一个完整的爬虫,无外乎4...

  • 2020-03-28 respuests 的使用

    总结:新的爬虫方法,比urllib好理解。

  • 阶段性序

    阶段性目标:Leetcode 300道、体脂17% or 体重92斤阶段性安排:维持边做题边输出总结的节奏,并且始...

网友评论

    本文标题:12_爬虫阶段性总结

    本文链接:https://www.haomeiwen.com/subject/texdpxtx.html