请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 14856|回复: 10

[参考资料] python之爬虫基础

[复制链接]

新浪微博达人勋

发表于 2019-7-5 23:53:39 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 15195775117 于 2020-12-4 09:13 编辑

爬虫工作步骤:
1、“获取数据”
使用网络模块,模拟浏览器,向服务器发送正常的http/https请求。服务器正常响应后,主机收到包含所需信息的网页代码。
网络模块有:urllib2,httplib,requests
2、“过滤数据”
使用过滤模块,过滤网页代码中的信息
过滤模块有:lxml,html.parser,re
--------------------------------------------
获取数据,比过滤数据,复杂得多。
--------------------------------------------
long long time ago,随便一个requests模块就能从网站获取数据,现在不同了。
欺骗服务器的反爬虫的方法包括:
(1)发送http/https请求时,添加header和cookies
(2)利用代理
(3)发送请求之间间隔一段时间

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2019-7-6 12:58:37 | 显示全部楼层
slddbs 发表于 2019-7-6 10:22
我觉得这种帖子没有任何意义

在老手眼里这些固然没有价值,我写这种帖子,主要是作为笔记,其中也会附加我的思考内容,比如与其他语言啊、数学啊、行业现状之类的评注。同道看到了,也能一起交流下。
听过“费曼学习法”吗?“转述”是最好的学习方法,将学到的重新复述一遍,会理解得更深、记得更牢。随着学习的进行,本贴会继续追加内容,最后我会把所有楼层捋一遍,总结出精华,该删的删,该留的留。
密码修改失败请联系微信:mofangbao
回复 支持 3 反对 0

使用道具 举报

新浪微博达人勋

发表于 2019-7-6 10:22:11 | 显示全部楼层
我觉得这种帖子没有任何意义
密码修改失败请联系微信:mofangbao
回复 支持 0 反对 2

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-6 00:05:20 | 显示全部楼层
本帖最后由 15195775117 于 2020-12-4 09:13 编辑

爬行策略
就是指爬行的先后次序。
比如,有100个网页(HTML)要爬
(1)广度优先法
先请求完100个网页的数据,再逐个过滤
例子:Pyspider
(2)深度优先法
请求第一个网页的数据,过滤;再请求第二的网页的数据,过滤;......
例子:bs4
(3)复杂爬行策略
例子:pagerank,opic

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-6 00:12:25 | 显示全部楼层
本帖最后由 15195775117 于 2020-12-4 09:13 编辑

Cookie---用户的身份识别码
-----------------------
网站服务器识别用户身份用是根据cookie
cookie是网站为了辨别用户身份、进行session跟踪,储存在用户本地终端上的加密数据
负责cookie的模块叫cookielib
比如某网站需要登录才能访问,可以用urllib2库保存这个登录的cookie,来进行爬取。

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-7 23:25:19 | 显示全部楼层
本帖最后由 15195775117 于 2020-12-4 09:14 编辑

urllib.request打开url的案例:
----------------------------
#作者:
__author__ = '1039483898@qq.com'
import urllib.request
def linkBaidu():
    url='https://www.baidu.com'
    try:
        #打开url,timeout是超时时间设置
        response=urllib.request.urlopen(url,timeout=3)
        result=response.read().decode('utf-8')
    except Exception as e:
        print("网络地址错误")
        exit()
    #写文本
    with open('baidu.txt','w') as fp:
        fp.write(result)
    print("获取url信息:%s" %response.geturl())
    '''
    getcode()返回200表示成功
    404表示网页不存在
    503表示服务器暂不可用
    '''
    print("获取返回代码:%s" %response.getcode())
    print("获取返回信息: %s"%response.info())
linkBaidu()  
输出结果:
360截图20190707231930879.jpg


密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-27 10:45:30 | 显示全部楼层
本帖最后由 15195775117 于 2020-12-4 09:14 编辑

爬虫(Clawler)分类:
1、通用爬虫
2、聚焦爬虫
3、增量式爬虫
4、深层爬虫
实际使用的爬虫通常是组合着来
--------------------------------
通用爬虫=全网爬虫
爬行范围巨大,爬海量数据,对爬行速度和存储空间要求高。
对爬行页面的顺序没什么要求,并行工作。
主要应用于大型搜索引擎。
构成:
初始URL集合,URL队列,
页面爬行模块,页面分析模块,
页面数据库,链接过滤模块...
--------------------------------
聚焦爬虫=主题爬虫
全网爬虫将整个互联网为目标,主题爬虫以与主题相关的页面为目标
--------------------------------
增量式爬虫
原理类似AJAX,网页更新了会进行爬取,不更新的网页不爬取
--------------------------------
00.png
深层爬虫
该命名是根据网页的分类来的,某些网页需要提交表单才能获取想要的页面,
如真气网某城市某日的六参数,NOAA后向轨迹图等,
这种页面叫“深层网页”,
如新闻这种属于“表层网页”,因为不需要你填、选什么。
深层爬虫的构成=6+2:
“爬行控制器”+“解析器”+“表单分析器”+“表单处理器”+“响应分析器”+“LVS控制器”+URL列表+LVS表
LVS=Label Value Set=填充表单的数据源,我理解为自动填表的工具

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-7-29 10:13:44 | 显示全部楼层
支持,可以多记录分享自己的学习过程
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-11-26 16:53:24 | 显示全部楼层
刚进入气象领域工作,数据获取是个难题,支持楼主。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-11-27 10:10:08 | 显示全部楼层
Moebius 发表于 2019-11-26 16:53
刚进入气象领域工作,数据获取是个难题,支持楼主。

这个月刚学会从高德地图扒数据,很实用,共勉!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表