爬虫学习笔记

爬虫模拟浏览器实例:

方法一、使用build_opener()修改报头

#!/usr/bin/env python
# -*-coding:utf-8-*-
# __author__="life"
import urllib.request
url = ‘http://blog.csdn.net/justloveyou_/article/details/69611328‘
# file = urllib.request.urlopen(url)
headers = ("User-Agent",
           "Mozilla/5.0 (Windows NT 10.0; WOW64) "
           "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36")
opener = urllib.request.build_opener()
opener.addheaders = [headers]
data = opener.open(url).read()

with open(‘3.html‘,‘wb‘) as fhandle:
    fhandle.write(data)

方法2、使用add_header()添加报头

import urllib.request
url = ‘http://blog.csdn.net/justloveyou_/article/details/69611328‘
req = urllib.request.Request(url)
req.add_header("User-Agent",
           "Mozilla/5.0 (Windows NT 10.0; WOW64) "
           "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36")
data = urllib.request.urlopen(req).read()

超时设置:

将timeout值设置为1

#! /usr/bin/env python3
# -*- coding: utf-8 -*-
# __author__ = "life"
# Email: [email protected]
# Date: 17-4-8
import urllib.request
for i in range(1,100):
    try:
        file = urllib.request.urlopen("http://yum.iqianyue.com",timeout = 1)
        data = file.read()
        print(len(data))
    except Exception as e:
        print(‘出现异常--->>‘ + str(e))

HTTP协议请求

GET请求:get请求会通过url网址传递信息

POST请求:可以向服务器存储提交数据,是一种比较主流也比较安全的数据传递方式,登录过程经常使用

PUT请求:请求服务器存储一个资源,通常要指定存储的位置

DELETE请求:请求服务器删除一个资源

HEAD请求:请求获取对应的HTTP报头信息

OPTIONS请求:可以获得当前URL所支持的请求类型

TRACE请求主要于测试和诊断

1、GET请求实例分析:

百度搜索是用GET请求,https://www.baidu.com/s?wd=hello的结构,根据此原理,构造GET请求,用爬虫实现在百度上自动查询某个关键词

用百度上查询关键词为hello的结果,代码实例如下:

#! /usr/bin/env python3
# -*- coding: utf-8 -*-
# __author__ = "life"
# Email: [email protected]
# Date: 17-4-8
import urllib.request
keyword = ‘hello‘
url = ‘http://www.baidu.com/s?wd=‘ + keyword
req = urllib.request.Request(url)
data = urllib.request.urlopen(req).read()
with open(‘r.html‘,‘wb‘) as fhandle:
    fhandle.write(data)上面的代码还有些问题,如果搜索关键字为中文就会出错,优化一下:
import urllib.requestkeyword = ‘刘东‘key_encode = urllib.request.quote(keyword) # 编码中文url = ‘http://www.baidu.com/s?wd=‘url_all = url + key_encodereq = urllib.request.Request(url_all)data = urllib.request.urlopen(req).read()with open(‘r.html‘,‘wb‘) as fhandle:    fhandle.write(data)

2、POST请求实例分析:

测试网址为:http://www.iqianyue.com/mypost

import urllib.request
import urllib.parse

url = "http://www.iqianyue.com/mypost/"
postdata = urllib.parse.urlencode({
    "name":"[email protected]",
    "pass":"aA123456"
}).encode(‘utf-8‘) # 将数据使用urlencode编码处理后,使用encode()设置为utf-8编码
req = urllib.request.Request(url,postdata)
req.add_header(‘User-Agent‘,"Mozilla/5.0 (Windows NT 10.0; WOW64) "
           "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36")
data = urllib.request.urlopen(req).read()
with open(‘6.html‘,‘wb‘) as fhandle:
    fhandle.write(data)

3、代理服务器设置

代理服务器地址查找:http://yum.iqianyue.com/proxy

通过代理服务器爬取网站实例:

def use_proxy(proxy_addr,url):
    import urllib.request
    proxy = urllib.request.ProxyHandler({‘http‘:proxy_addr})
    opener = urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
    urllib.request.install_opener(opener)
    data = urllib.request.urlopen(url).read().decode(‘utf-8‘)
    return data

proxy_addr = "110.73.1.58:8123"
data = use_proxy(proxy_addr,‘http://www.baidu.com‘)
print(len(data))
时间: 2024-11-05 12:11:26

爬虫学习笔记的相关文章

python网络爬虫学习笔记

python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章目录 1. 介绍: 2. 从简单语句中开始: 3. 传送数据给服务器 4. HTTP头-描述数据的数据 5. 异常 5.0.1. URLError 5.0.2. HTTPError 5.0.3. 处理异常 5.0.4. info和geturl 6. Opener和Handler 7. Basic Authentication 8. 代理 9. Timeout 设置 10. Cookie 11. Deb

[爬虫学习笔记]C#基于ARSoft.Tools.Net的DNS解析模块(半成品)

      最近在做爬虫的作业,今天学习的内容是关于DNS解析模块的制作的.使用的库为ARSoft.Tools.Net,它是一个非常强大的开源DNS控件库,包含.Net SPF validation, SenderID validation以及DNS Client.DNS Server接口.使用该接口可轻松实现DNS客户请求端及服务器解析端.项目地址:http://arsofttoolsnet.codeplex.com/,Nuget包地址:https://www.nuget.org/packag

python 网络爬虫学习笔记(一)

为了方便,在Windows下我用了PyCharm,个人感觉这是一款优秀的python学习软件.爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来. 学习python爬虫前,先学习下其他的一些知识: (一)url URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址.互联网上的每个文件都有一个唯一的URL,

[爬虫学习笔记]MemoryCache缓存的用法学习

      在完成了DNS解析模块之后,我意识到了DNS缓存机制也很有必要.在Redis,Memcache,和.Net自带的Cache之间,考虑到部署问题,最终选择了后者,之前在学习Web及开发的过程中用过System.Web.Caching.Cache这个类库,但是这次的爬虫程序我打算部署为桌面软件,所以选用了System.Runtime.Caching.MemoryCache(后期如有必要也会加入System.Web.Caching.Cache来适配Web端程序).       Memory

python 爬虫学习笔记1

经过一段时间的学习,终于入了门 先爬一个csdn 的blog练练手 整体思路是首先判断某个blog有多少页 然后根据页数 去获得相应的url 再爬出每一页的title和对应的url 这里使用了BeautifulSoup来解析页面 #coding=utf-8 import urllib2 from bs4 import BeautifulSoup import sys reload(sys) sys.setdefaultencoding('utf-8') def query_item(input,

Python爬虫学习笔记1

加入实验室,要写爬虫,以前写过java的,新学python练练手 首先是发包程序,框架如下: 首先是POST方式,代码如下: 1 import urllib 2 import urllib2 3 url='http://someserver.com/cgi-bin/register.cgi' 4 user_agent='Mozilla/4.0' 5 values={ 6 'name':'Liuyuqing', 7 'location':'DUT', 8 'language':'python' 9

Python爬虫学习笔记——豆瓣登陆(一)

#-*- coding:utf-8 -*- import requests from bs4 import BeautifulSoup import html5lib import re import urllib url1 = 'http://accounts.douban.com/login' url2 = 'http://www.douban.com/people/*****/contacts' formdata={ "redir":"http://www.douban

【Python爬虫学习笔记(1)】urllib2库相关知识点总结

1. urllib2的opener和handler概念 1.1 Openers: 当你获取一个URL你使用一个opener(一个urllib2.OpenerDirector的实例).正常情况下,我们使用默认opener:通过urlopen.但你能够创建个性的openers.可以用build_opener来创建opener对象.一般可用于需要处理cookie或者不想进行redirection的应用场景(You will want to create openers if you want to f

[爬虫学习笔记]基于 SimHash 的去重复处理模块ContentSeen的构建

      Internet上的一些站点常常存在着镜像网站(mirror),即两个网站的内容一样但网页对应的域名不同.这样会导致对同一份网页爬虫重复抓取多次.为了避免这种情况,对于每一份抓取到的网页,它首先需要进入ContentSeen模块.该模块会判断网页的内容是否和已下载过的某个网页的内容一致,如果一致,则该网页不会再被送去进行下一步的处理.这样的做法能够显著的降低爬虫需要下载的网页数.至于如果判断两个网页的内容是否一致,一般的思路是这样的:并不会去直接比较两个网页的内容,而是将网页的内容经

神箭手爬虫学习笔记(二)

一,可以使用神剑手已经做好的爬虫市场直接跑,不需要自己定义爬取规则 二,爬虫市场里没有的网站,需要自己去定义规则来爬数据. 三,爬取的数据可以先存放在神剑手,也可以放到七牛暂存.(提醒下,网站需要数据备份如果数量不大可以到七牛做备份,有免费版) 四,爬取的数据可以直接发布到数据库,也可以发布到具有支持神剑插件的网站.可以手动发布,也可以自动发布. 五,可以使用代理IP,防封 六:常用的几个辅助工具:http://docs.shenjianshou.cn/develop/tools/tools.h