python 网络爬虫入门笔记

参考:http://www.cnblogs.com/xin-xin/p/4297852.html

一、简介

  爬虫即网络爬虫,如果将互联网比做成一张大网,那么蜘蛛就是爬虫。如果它遇到资源,将会抓取下来。

二、过程

  在我们浏览网页时,我们经常会看到一些形形色色的页面,其实这个过程就是我们输入url,经DNS解析成对应的ip找到对应的服务器主机,向服务器发出一个请求,服务器经过解析之后将html,js等发回浏览器显示。

  其实爬虫和这个过程差不多,只不过我们在抓取到html后,通过正则表达式来确定要获取的内容。

三、urllib库的使用

  1.抓住页面的html:

         

#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib,urllib2
url = ‘http://www.baidu.com‘
response = urllib2.urlopen(url)
html = response.read()
print html

  2.构造request

  比如,将上面代码可以这样改写:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib,urllib2
url = ‘http://www.baidu.com‘
request = urllib2.Request(url)
response = urllib2.urlopen(request)
html = response.read()
print html

  3.GET和POST数据的传输

  POST:

  注:只是演示方法   由于网站还有header  cookie 等验证 代码并不能登陆

#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib,urllib2
values = {"username":"xxxxxx","password":"xxxxxx"}
data = urllib.urlencode(values)
url = "http://www.xiyounet.org/checkout/"
request = urllib2.Request(url,data)
reponse = urllib2.urlopen(request)
print reponse.read()
    

  GET:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib,urllib2
values = {"username":"xxxxxx","password":"xxxxxx"}
data = urllib.urlencode(values)
url = "http://www.xiyounet.org/checkout/"
geturl = url + "?" +data
request = urllib2.Request(geturl)
reponse = urllib2.urlopen(request)
print reponse.read()
    

  4.设置headers

  由于大多数网站并不能像上面一样登陆,为了能够更全面的模拟浏览器,所以我们有必要来学习header

#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib,urllib2
url = "http://www.xiyounet.org/checkout/"
user_agent =  "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36"
referer = "http://www.xiyounet.org/checkout/"
values = {"username":"xxxxx","password":"xxxxx"}
headers = {‘User-Agent‘:user_agent,‘Referer‘:referer}
data = urllib.urlencode(values)
request = urllib2.Request(url,data,headers)
reponse = urllib2.urlopen(request)
print reponse.read()
    

  5.cookie的使用

    ⑴cookie是指一些网站用于辨别用户身份、进行session跟踪而存储在用户本地终端上的数据(一般是被加密)。我们在爬虫时,如果遇到有登陆的网站,若没有登陆是不 允许抓取的,我们可以获取到cookie后模拟登陆,从而达到抓取目的

  urllib2中两个重要的概念:

  •  openers: 我们都知道 urlopen()这个函数,其实它就是urllib2函数的opener,其实我们也可以去创建自己喜欢的opener
  • handler:
http://www.jb51.net/article/46495.htm

     ⑵cookielib模块:它的功能主要是提供可供存储的cookie对象配合urllib2来访问internet  我们可以用该模块的cookiejar类的对象来获取cookie:

      它与urllib2模块结合使用来模拟登陆,主要的方法有:CookieJar  , FileCookieJar ,  MozillaCookieJar  ,LWPcookieJar

#!usr/bin/python
#coding:utf-8
import urllib2
import cookielib
#声明一个cookieJar对象实例来保存cookie
cookie = cookielib.CookieJar()
#利用urllib2库的HTTPCookieProcessor的对象来创建cookie处理器
handler = urllib2.HTTPCookieProcessor(cookie)
#通过handler来构建opener
opener = urllib2.build_opener(handler)
#后面也可以request访问
response = opener.open("http://www.xiyounet.org/checkout/")
for item in cookie:
    print ‘Name = ‘+item.name
    print ‘value = ‘+item.value

    ⑶将cookie保存至文件

    

#!usr/bin/python
#coding:utf-8
import urllib2
import cookielib

filename = ‘cookie.txt‘
#声明一个MozillaCookieJar对象实例来保存cookie,并写入文件
cookie = cookielib.MozillaCookieJar(filename)
#利用urllib2库的HTTPCookieProcessor的对象来创建cookie处理器
handler = urllib2.HTTPCookieProcessor(cookie)
#通过handler来构建opener
opener = urllib2.build_opener(handler)
#后面也可以request访问
response = opener.open("http://www.xiyounet.org/checkout/")
#save方法的两个参数
#ignore_discard:保存cookie
#ignore_expires:如果存在则覆盖
cookie.save(ignore_discard = True,ignore_expires = True)

    ⑷从文件中读取:

    

#usr/bin/python
#coding:utf-8
import cookielib
import urllib2

#创建MozillaCookieJar实例对象
cookie = cookielib.MozillaCookieJar()
#从文件中读取cookie内容到变量
cookie.load(‘cookie.txt‘, ignore_discard=True, ignore_expires=True)
#创建请求的request
req = urllib2.Request("http://www.xiyounet.org/checkout/")
#利用urllib2的build_opener方法创建一个opener
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response = opener.open(req)
print response.read()

    ⑸实战:登陆签到系统

    

    可能是服务器设置了什么权限,这个返回400

#usr/bin/python
#coding:utf-8
import cookielib
import urllib2
import urllib
url = "http://www.xiyounet.org/checkout/index.php"
passdata = urllib.urlencode({‘Username‘:‘songxl‘,‘Password‘:‘Songxl123456‘})
cookiedata = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0","Referer":"http://www.xiyounet.org/checkout/","Host":"http://www.xiyounet.org"}
#设置保存cookie的文件,同级目录下的cookie.txt
filename = ‘cookie.txt‘
#声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
cookie = cookielib.MozillaCookieJar(filename)
#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
handler = urllib2.HTTPCookieProcessor(cookie)
#通过handler来构建opener
opener = urllib2.build_opener(handler)
req = urllib2.Request(url.encode(‘utf-8‘),passdata,cookiedata)
result = opener.open(req)
print result.read()

  

  

  

时间: 2024-08-23 06:02:05

python 网络爬虫入门笔记的相关文章

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

python网络爬虫入门(二)——用python简单实现调用谷歌翻译

最近在看国外的文档,有些生词不认识.就用谷歌翻译来理解,用着用着闲来无事就按F12查看了下页面的源代码.发现可以用python简单的实现下谷歌翻译的页面功能.于是先上网搜下有没有类似的文章博客,发现几篇不错的,于是参考其他代码与自己的思路,简单的实现了下翻译的功能,代码如下: import re import urllib,urllib2 #----------模拟浏览器的行为,向谷歌翻译发送数据,然后抓取翻译结果,这就是大概的思路------- def Gtranslate(text): #t

python网络爬虫入门(一)——简单的博客爬虫

最近,为了微信公众号的图文,上网疯狂的收集和看了一些有深度的新闻和有趣的引人深思的文字评论,并选择了几篇极品发布出去.但感觉一篇一篇的看实在是麻烦死了.想找一个简单的解决办法,看能不能自动把网上的资料收集起来,然后自己用统一筛选.不巧,最近准备学习下网络爬虫相关知识,于是按照网上的教程自己学着试写了一个小小的爬虫,嘻嘻,是用来爬韩寒博客的. 先把完整的代码贴上来,如果朋友们需要试验下,请先安装python相关环境,然后在复制粘贴保存,再按F5运行. #导入urllib库,python访问网页必须

python网络爬虫入门

python网络爬虫入门(一) 网络爬虫的定义 1.网络蜘蛛.网络机器人,抓取网络数据的程序. 2.其实就是用Python(其他语言也可以这里介绍python)程序模仿人点击浏览器并访问网站,而且模仿的越逼真越好. 对比几种语言 1.Python :请求模块.解析模块丰富成熟,强大的Scrapy网络爬虫框架 2.PHP :对多线程.异步支持不太好 3.JAVA:代码笨重,代码量大 4.C/C++:虽然效率高,但是代码成型慢 爬取数据的一般步骤 1.确定需要爬取的URL地址 2.由请求模块向URL

Python网络爬虫入门篇

1.  预备知识 学习者需要预先掌握Python的数字类型.字符串类型.分支.循环.函数.列表类型.字典类型.文件和第三方库使用等概念和编程方法. 2. Python爬虫基本流程 a. 发送请求 使用http库向目标站点发起请求,即发送一个Request,Request包含:请求头.请求体等. Request模块缺陷:不能执行JS 和CSS 代码. b. 获取响应内容 如果requests的内容存在于目标服务器上,那么服务器会返回请求内容. Response包含:html.Json字符串.图片,

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

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

Python网络爬虫入门,带你领略Python爬虫的乐趣!

前段时间小编写了一篇有关于Python入门的文章,我觉得写的还是不够好,所以我特地补上一篇Python爬虫的入门的,本文特别适合Python小白,刚学习爬虫不久.接下来就让我们一起来写第一个例子吧! 一.我们的目标 1.作为第一个例子,我就以抓取糗事百科热门贴为例吧 2.糗事百科热门帖,获取其发布者.评论.点赞数.评论等信息 3.将信息清洗并打印,循环输出 4.设计程序,使可以选择抓取的页面范围 5.将每一页的信息保存到文本 二.开发环境介绍 phthon 2.7.13 IDE:PyCharm

Python网络爬虫使用总结

网络爬虫使用总结:requests–bs4–re技术路线 简要的抓取使用本技术路线就能轻松应对.参见:Python网络爬虫学习笔记(定向) 网络爬虫使用总结:scrapy(5+2结构) 使用步骤: 第一步:创建工程: 第二步:编写Spider: 第二步:编写Item Pipeline: 第四步:优化配置策略: 工程路径: 网络爬虫使用总结:展望(PhantomJS) 如上所有的两条记录路线仅仅是对网页的处理,只能爬取单纯的html代码.就需要引出"PhantomJS",PhantomJ

Python网络爬虫笔记(五):下载、分析京东P20销售数据

(一)  分析网页 下载下面这个链接的销售数据 https://item.jd.com/6733026.html#comment 1.      翻页的时候,谷歌F12的Network页签可以看到下面的请求. 从Preview页签可以看出,这个请求是获取评论信息的 2.      对比第一页.第二页.第三页-请求URL的区别 可以发现 page=0.page=1,0和1指的应该是页数. 第一页的 request url:没有这个rid=0& . 第二.三页-的request url:多了这个ri