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

气象家园

 找回密码
 立即注册

新浪微博登陆

只需一步, 快速开始

QQ登录

只需一步,快速开始

搜索
查看: 326|回复: 5

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

[复制链接] |关注本帖

新浪微博达人勋

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

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

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

已有2人关注本帖

beesfly问题少女
密码修改失败请联系qq:937062711

新浪微博达人勋

 楼主| 发表于 2019-7-6 12:58:37 | 显示全部楼层 |取消关注该作者的回复
slddbs 发表于 2019-7-6 10:22
我觉得这种帖子没有任何意义

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

使用道具 举报

新浪微博达人勋

发表于 2019-7-6 10:22:11 | 显示全部楼层 |取消关注该作者的回复
我觉得这种帖子没有任何意义
密码修改失败请联系qq:937062711
回复 支持 0 反对 2

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-6 00:05:20 | 显示全部楼层 |取消关注该作者的回复
爬行策略
就是指爬行的先后次序。
比如,有100个网页(HTML)要爬
(1)广度优先法
先请求完100个网页的数据,再逐个过滤
例子:Pyspider
(2)深度优先法
请求第一个网页的数据,过滤;再请求第二的网页的数据,过滤;......
例子:bs4
(3)复杂爬行策略
例子:pagerank,opic
密码修改失败请联系qq:937062711
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-6 00:12:25 | 显示全部楼层 |取消关注该作者的回复
Cookie---用户的身份识别码


-----------------------
网站服务器识别用户身份用是根据cookie
cookie是网站为了辨别用户身份、进行session跟踪,储存在用户本地终端上的加密数据
负责cookie的模块叫cookielib
比如某网站需要登录才能访问,可以用urllib2库保存这个登录的cookie,来进行爬取。
密码修改失败请联系qq:937062711
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-7 23:25:19 | 显示全部楼层 |取消关注该作者的回复
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


密码修改失败请联系qq:937062711
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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