iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python爬虫的8个常用技巧分别是什么
  • 365
分享到

Python爬虫的8个常用技巧分别是什么

2023-06-04 23:06:52 365人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章将为大家详细讲解有关python爬虫的8个常用技巧分别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python作为一门高级编程语言,它的定位是优雅、明确和简单。我学用Pyth

这篇文章将为大家详细讲解有关python爬虫的8个常用技巧分别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

python作为一门高级编程语言,它的定位是优雅、明确和简单。我学用Python差不多一年时间了,用得最多的还是各类爬虫脚本:写过抓代理本机验证的脚本,写过论坛中自动登录自动发贴的脚本,写过自动收邮件的脚本,写过简单的验证码识别的脚本。

这些脚本有一个共性,都是和WEB相关的,总要用到获取链接的一些方法,故累积了不少爬虫抓站的经验,在此总结一下,那么以后做东西也就不用重复劳动了。

基本抓取网页

get方法

import urllib2

url = "Http://www.baidu.com"

response = urllib2.urlopen(url)

print response.read()

post方法

import urllib

import urllib2

url = "http://abcde.com"

fORM = {'name':'abc','passWord':'1234'}

form_data = urllib.urlencode(form)

request = urllib2.Request(url,form_data)

response = urllib2.urlopen(request)

print response.read()

使用代理服务器

这在某些情况下比较有用,比如IP被封了,或者比如IP访问的次数受到限制等等。

import urllib2

proxy_support = urllib2.ProxyHandler({'http':'http://XX.XX.XX.XX:XXXX'})

opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler)

urllib2.install_opener(opener)

content = urllib2.urlopen('http://XXXX').read()

Cookies处理

import urllib2, cookielib

cookie_support= urllib2.HTTPCookieProcessor(cookielib.Cookiejar())

opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)

urllib2.install_opener(opener)

content = urllib2.urlopen('http://XXXX').read()

是的没错,如果想同时用代理和cookie,那就加入proxy_support然后operner改为

opener=urllib2.build_opener(proxy_support, cookie_support, urllib2.HTTPHandler)

伪装成浏览器访问

某些网站反感爬虫的到访,于是对爬虫一律拒绝请求。这时候我们需要伪装成浏览器,这可以通过修改http包中的header来实现:

headers = {

    'User-Agent':'Mozilla/5.0 (windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'

}

req = urllib2.Request(

    url = 'http://secure.verycd.com/signin/*/http://www.verycd.com/',

    data = postdata,

    headers = headers

)

页面解析

对于页面解析最强大的当然是正则表达式,这个对于不同网站不同的使用者都不一样,就不用过多的说明。

Python爬虫的8个常用技巧分别是什么

其次就是解析库了,常用的有两个lxml和BeautifulSoup。

对于这两个库,我的评价是,都是html/XML的处理库,Beautifulsoup纯python实现,效率低,但是功能实用,比如能用通过结果搜索获得某个HTML节点的源码;lxmlC语言编码,高效,支持Xpath。

验证码的处理

碰到验证码咋办?这里分两种情况处理:

Google那种验证码,没办法。

简单的验证码:字符个数有限,只使用了简单的平移或旋转加噪音而没有扭曲的,这种还是有可能可以处理的,一般思路是旋转的转回来,噪音去掉,然后划分单个字符,划分好了以后再通过特征提取的方法(例如PCA)降维并生成特征库,然后把验证码和特征库进行比较。这个比较复杂,这里就不展开了,具体做法请弄本相关教科书好好研究一下。

gzip/deflate支持

现在的网页普遍支持gzip压缩,这往往可以解决大量传输时间,以VeryCD的主页为例,未压缩版本247K,压缩了以后45K,为原来的1/5。这就意味着抓取速度会快5倍。

然而python的urllib/urllib2默认都不支持压缩,要返回压缩格式,必须在request的header里面写明’accept-encoding’,然后读取response后更要检查header查看是否有’content-encoding’一项来判断是否需要解码,很繁琐琐碎。如何让urllib2自动支持gzip, defalte呢?

其实可以继承BaseHanlder类,然后build_opener的方式来处理:

import urllib2

from gzip import GzipFile

from Stringio import StringIO

class ContentEncodingProcessor(urllib2.BaseHandler):

  """A handler to add gzip capabilities to urllib2 requests """

  # add headers to requests

  def http_request(self, req):

    req.add_header("Accept-Encoding", "gzip, deflate")

    return req

  # decode

  def http_response(self, req, resp):

    old_resp = resp

    # gzip

    if resp.headers.get("content-encoding") == "gzip":

        gz = GzipFile(

                    fileobj=StringIO(resp.read()),

                    mode="r"

                  )

        resp = urllib2.addinfourl(gz, old_resp.headers, old_resp.url, old_resp.code)

        resp.msg = old_resp.msg

    # deflate

    if resp.headers.get("content-encoding") == "deflate":

        gz = StringIO( deflate(resp.read()) )

        resp = urllib2.addinfourl(gz, old_resp.headers, old_resp.url, old_resp.code)  # 'class to add info() and

        resp.msg = old_resp.msg

    return resp

# deflate support

import zlib

def deflate(data):  # zlib only provides the zlib compress format, not the deflate format;

  try:              # so on top of all there's this workaround:

    return zlib.decompress(data, -zlib.MAX_WBITS)

  except zlib.error:

    return zlib.decompress(data)

然后就简单了,

encoding_support = ContentEncodingProcessor

opener = urllib2.build_opener( encoding_support, urllib2.HTTPHandler )

#直接用opener打开网页,如果服务器支持gzip/defalte则自动解压缩

content = opener.open(url).read()

多线程并发抓取

线程太慢的话,就需要多线程了,这里给个简单的线程池模板 这个程序只是简单地打印了1-10,但是可以看出是并发的。

虽然说Python的多线程很鸡肋,但是对于爬虫这种网络频繁型,还是能一定程度提高效率的。

from threading import Thread

from Queue import Queue

from time import sleep

# q是任务队列

#NUM是并发线程总数

#JOBS是有多少任务

q = Queue()

NUM = 2

JOBS = 10

#具体的处理函数,负责处理单个任务

def do_somthing_using(arguments):

    print arguments

#这个是工作进程,负责不断从队列取数据并处理

def working():

while True:

arguments = q.get()

do_somthing_using(arguments)

sleep(1)

q.task_done()

#fork NUM个线程等待队列

for i in range(NUM):

t = Thread(target=working)

t.setDaemon(True)

t.start()

#把JOBS排入队列

for i in range(JOBS):

q.put(i)

#等待所有JOBS完成

q.join()

总结

阅读Python编写的代码感觉像在阅读英语一样,这让使用者可以专注于解决问题而不是去搞明白语言本身。Python虽然是基于C语言编写,但是摒弃了C中复杂的指针,使其变得简明易学。并且作为开源软件,Python允许对代码进行阅读,拷贝甚至改进。这些性能成就了Python的高效率,有“人生苦短,我用Python”之说,是一种十分精彩又强大的语言。

总而言之,开始学Python一定要注意这4点:

代码规范,这本身就是一个非常好的习惯,如果开始不养好好的代码规划,以后会很痛苦。

多动手,少看书,很多人学Python就一味的看书,这不是学数学物理,你看例题可能就会了,学习Python主要是学习编程思想。

勤练习,学完新的知识点,一定要记得如何去应用,不然学完就会忘,学我们这行主要都是实际操作。

学习要有效率,如果自己都觉得效率非常低,那就停不停,找一下原因,去问问过来人这是为什么。

关于Python爬虫的8个常用技巧分别是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: Python爬虫的8个常用技巧分别是什么

本文链接: https://www.lsjlt.com/news/240253.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python爬虫的8个常用技巧分别是什么
    这篇文章将为大家详细讲解有关Python爬虫的8个常用技巧分别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python作为一门高级编程语言,它的定位是优雅、明确和简单。我学用pyth...
    99+
    2023-06-04
  • Python爬虫入门中8个常用爬虫技巧盘点分别是怎样的
    今天就跟大家聊聊有关Python爬虫入门中8个常用爬虫技巧盘点分别是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。编程对于任何一个新手来说都不是一件容易的事情,Python对于...
    99+
    2023-06-02
  • 带你入门Python爬虫,8个常用爬虫技巧盘点
    python作为一门高级编程语言,它的定位是优雅、明确和简单。我学用python差不多一年时间了,用得最多的还是各类爬虫脚本:写过抓代理本机验证的脚本,写过论坛中自动登录自动发贴的脚本,写过自动收邮件的脚本,写过简单的验证码识别的脚本。这些...
    99+
    2023-06-05
  • 有哪些常用的Python爬虫技巧
    本篇内容介绍了“有哪些常用的Python爬虫技巧”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、基本抓取网页get方法import&nbs...
    99+
    2023-06-16
  • 常用的python爬虫技巧有哪些
    常用的Python爬虫技巧有以下几个:1. 使用requests库发送HTTP请求:使用requests库可以方便地发送HTTP请求...
    99+
    2023-08-23
    python
  • python爬虫工程师必备的10个爬虫工具分别是什么
    python爬虫工程师必备的10个爬虫工具分别是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。爬虫工程师必备的10个爬虫工具爬虫工程师必备的10个爬虫工具!...
    99+
    2023-06-02
  • 22个Python实用技巧分别是什么
    本篇文章给大家分享的是有关22个Python实用技巧分别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。被人工智能捧红的 Python 已是一种发展完善且非常多样化的语言,...
    99+
    2023-06-05
  • golang爬虫和Python爬虫的区别是什么
    golang爬虫和Python爬虫的区别是:1、Golang具有较高的性能,而Python通常比较慢;2、Golang的语法设计简洁、清晰,而Python的语法简洁、易读易写;3、Golang天生支持并发,而Python的并发性能相对较差;...
    99+
    2023-12-12
    golang爬虫 Python爬虫
  • 8个Python高效数据分析的技巧分别是哪些
    这期内容当中小编将会给大家带来有关8个Python高效数据分析的技巧分别是哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。不管是参加Kaggle比赛,还是开发一个深度学习应用,***步总是数据分析。介绍...
    99+
    2023-06-17
  • Python的两个实用冷技巧分别是什么
    这期内容当中小编将会给大家带来有关Python的两个实用冷技巧分别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一. 记得刚开始工作的时候,老大给我们上 C++ 基础课,告诉我们字符串字面量可以换行...
    99+
    2023-06-17
  • python爬虫中分布式爬虫的作用是什么
    这篇文章给大家分享的是有关python爬虫中分布式爬虫的作用是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。随着大数据时代的来临,大数据也吸引了越来越多的关注。网络爬虫是一种高效的信息抓取工具,它集成了搜索引...
    99+
    2023-06-15
  • Python的8个语法分别是什么
    Python的8个语法分别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。那作为通用编程语言,Python为何更胜一筹?近年来,Python 更是横扫了各大语言排行榜。...
    99+
    2023-06-05
  • 良心推荐!Python爬虫高手必备的8大技巧!
    想要快速学习爬虫,最值得学习的语言一定是Python,Python应用场景比较多,比如:Web快速开发、爬虫、自动化运维等等,可以做简单网站、自动发帖脚本、收发邮件脚本、简单验证码识别脚本。爬虫在开发过程中也有很多复用的过程,今天就总结一下...
    99+
    2023-05-14
    Python 技巧 爬虫
  • Python17个实用小技巧分别是什么
    这篇文章给大家介绍Python17个实用小技巧分别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Python是机器学习的主流语言,没有之一。今年5月,它首次在PYPL排行榜上超越JAVA,成为全球第一大编程语言。...
    99+
    2023-06-05
  • 20个Python常用技巧分享
    目录1.字符串反转2.每个单词的第一个字母大写3. 字符串查找唯一元素4.重复打印字符串和列表n次5.列表生成6.变量交换7.字符串拆分为子字符串列表8.多个字符串组合为一...
    99+
    2023-05-14
    Python常用技巧分享 Python常用技巧 Python技巧
  • python爬虫是干什么的
    python爬虫是指对指定url中获取对我们有用的数据信息,通过代码实现数据的大量获取,只要你能通过浏览器访问的数据都可以通过爬虫获取。实例:爬取图片并下载,先准备好以下几点。pip install requestspip install ...
    99+
    2024-04-02
  • Python爬虫解析网页的4种方式分别是什么
    本篇文章为大家展示了Python爬虫解析网页的4种方式分别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。用Python写爬虫工具在现在是一种司空见惯的事情,每个人都希望能够写一段程序去互联网上...
    99+
    2023-06-16
  • 用python爬虫抓站的一些技巧总结
    在使用Python进行网站爬取时,有一些技巧可以帮助您更有效地抓取站点数据。下面是一些总结:1. 使用合适的爬虫框架:Python中...
    99+
    2023-08-23
    python
  • 给Eclipse提速的7个技巧分别是什么
    给Eclipse提速的7个技巧分别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。有些人问我如何给Eclipse提速,这篇文章就来讨论这个问题。顺带提一下,这篇文章不是比较...
    99+
    2023-06-17
  • 8个写JavaScript代码小技巧是什么样的
    本篇文章为大家展示了8个写JavaScript代码小技巧是什么样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在编码时还需要保持代码整洁,平时注意积累在编码时所使...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作