python抓取多种类型的页面方法实例

与抓取预定义好的页面集合不同,抓取一个网站的所有内链会带来一个 挑战,即你不知道会获得什么。好在有几种基本的方法可以识别页面类型。

通过URL

一个网站中所有的博客文章可能都会包含一个 URL(例如 http://example.com/blog/title-of-post)。

通过网站中存在或者缺失的特定字段

如果一个页面包含日期,但是不包含作者名字,那你可以将其归类 为新闻稿。如果它有标题、主图片、价格,但是没有主要内容,那么它 可能是一个产品页面。

通过页面中出现的特定标签识别页面

即使不抓取某个标签内的数据,你仍然可以利用这个标签。你的爬 虫可以寻找类似于 <div id="related-products"> 这样的元素来识 别产品页面,即便是爬虫对相关产品的内容并不感兴趣。

为了跟踪多个页面类型,你需要在 Python 中有多个类型的页面对象。 这通过两种方式来实现。

如果页面都是相似的(它们基本上都是相同类型的内容),你可能需要 在现有的网页对象中加入一个 pageType 属性:

class Website:
"""所有文章/网页的共同基类"""
def __init__(self, type, name, url, searchUrl, resultListing,
resultUrl, absoluteUrl, titleTag, bodyTag):
self.name = name
self.url = url
self.titleTag = titleTag
self.bodyTag = bodyTag
self.pageType = pageType

如果你在一个类 SQL 的数据库中对这些页面进行排序,这种模式类型 意味着这些页面应该被存放在同一张表中,并且加入一个额外的 pageType 列。

如果你抓取的页面或内容各不相同(它们包含不同类型的字段),就需 要为每个页面类型创建一个新的对象。当然,有些东西是所有网页共有 的——它们都有一个 URL,也可能都有一个名称或者页面标题。这种 情况非常适合用子类:

class Website:
"""所有文章/网页的共同基类"""

def __init__(self, name, url, titleTag):
self.name = name
self.url = url
self.titleTag = titleTag

这不是一个由你的爬虫直接使用的对象,而是将被你的页面类型引用的 对象:

class Product(Website):
"""产品页面要抓取的信息"""
def __init__(self, name, url, titleTag, productNumber, price):
Website.__init__(self, name, url, TitleTag)
self.productNumberTag = productNumberTag
self.priceTag = priceTag
class Article(Website):
"""文章页面要抓取的信息"""
def __init__(self, name, url, titleTag, bodyTag, dateTag):
Website.__init__(self, name, url, titleTag)
self.bodyTag = bodyTag
self.dateTag = dateTag

这个产品页面扩展了Website基类,并且加入了仅适用于产品的productNumber和price属性,而Article类加入了body和date属性,这两个属性是不适用于产品的。

你可以用这两个类去抓取一个商店网站,该网站除了产品,可能还包含博客文章或新闻稿。

希望以上知识点能够帮助到大家,感谢大家对我们的支持。

(0)

相关推荐

  • python requests抓取one推送文字和图片代码实例

    这篇文章主要介绍了python requests抓取one推送文字和图片代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 requests是Python中一个第三方库,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求.接下来将记录一下requests的使用: from bs4 import BeautifulSoup f

  • Python 50行爬虫抓取并处理图灵书目过程详解

    前言 使用 requests进行爬取.BeautifulSoup进行数据提取. 主要分成两步: 第一步是解析图书列表页,并解析出里面的图书详情页链接. 第二步是解析图书详情页,提取出感兴趣的内容,本例中根据不同的数据情况,采用了不同的提取方法,总的感觉就是BeautifulSoup用起来很方便 以下是几个典型HTML内容提取的Python代码片段 1.提取详情页链接 列表页中的详情页链接片段 <h4 class="name"> <a href="/book/

  • python通过链接抓取网站详解

    在本篇文章里,你将会学习把这些基本方法融合到一个更灵活的网站 爬虫中,该爬虫可以跟踪任意遵循特定 URL 模式的链接. 这种爬虫非常适用于从一个网站抓取所有数据的项目,而不适用于从特 定搜索结果或页面列表抓取数据的项目.它还非常适用于网站页面组织 得很糟糕或者非常分散的情况. 这些类型的爬虫并不需要像上一节通过搜索页面进行抓取中采用的定位 链接的结构化方法,因此在 Website 对象中不需要包含描述搜索页面 的属性.但是由于爬虫并不知道待寻找的链接的位置,所以你需要一些 规则来告诉它选择哪种页

  • python实现爬虫抓取小说功能示例【抓取金庸小说】

    本文实例讲述了python实现爬虫抓取小说功能.分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- from bs4 import BeautifulSoup from urllib import request import re import os,time #访问url,返回html页面 def get_html(url): req = request.Request(url) req.add_header('User-Agent','Mozilla/5.0'

  • Python3简单爬虫抓取网页图片代码实例

    现在网上有很多python2写的爬虫抓取网页图片的实例,但不适用新手(新手都使用python3环境,不兼容python2), 所以我用Python3的语法写了一个简单抓取网页图片的实例,希望能够帮助到大家,并希望大家批评指正. import urllib.request import re import os import urllib #根据给定的网址来获取网页详细信息,得到的html就是网页的源代码 def getHtml(url): page = urllib.request.urlope

  • python抓取多种类型的页面方法实例

    与抓取预定义好的页面集合不同,抓取一个网站的所有内链会带来一个 挑战,即你不知道会获得什么.好在有几种基本的方法可以识别页面类型. 通过URL 一个网站中所有的博客文章可能都会包含一个 URL(例如 http://example.com/blog/title-of-post). 通过网站中存在或者缺失的特定字段 如果一个页面包含日期,但是不包含作者名字,那你可以将其归类 为新闻稿.如果它有标题.主图片.价格,但是没有主要内容,那么它 可能是一个产品页面. 通过页面中出现的特定标签识别页面 即使不

  • python抓取并保存html页面时乱码问题的解决方法

    本文实例讲述了python抓取并保存html页面时乱码问题的解决方法.分享给大家供大家参考,具体如下: 在用Python抓取html页面并保存的时候,经常出现抓取下来的网页内容是乱码的问题.出现该问题的原因一方面是自己的代码中编码设置有问题,另一方面是在编码设置正确的情况下,网页的实际编码和标示的编码不符合造成的.html页面标示的编码在这里: 复制代码 代码如下: <meta http-equiv="Content-Type" content="text/html;

  • Python抓取百度查询结果的方法

    本文实例讲述了Python抓取百度查询结果的方法.分享给大家供大家参考.具体实现方法如下: #win python 2.7.x import re,sys,urllib,codecs xh = urllib.urlopen("http://www.baidu.com/s?q1=123&rn=100").read().decode('utf-8') rc = re.compile(r'<td class=f><h3 class="t">

  • Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 #!/user/bin/python # -*- coding: gbk -*- #Spider.py import urllib2 import httplib import StringIO import gzip import re import chardet import sys import os import datetime from xml.dom.minidom import Documen

  • 使用Python抓取豆瓣影评数据的方法

    抓取豆瓣影评评分 正常的抓取 分析请求的url https://movie.douban.com/subject/26322642/comments?start=20&limit=20&sort=new_score&status=P&percent_type= 里面有用的也就是start和limit参数,我尝试过修改limit参数,但是没有效果,可以认为是默认的 start参数是用来设置从第几条数据开始查询的 设计查询列表,发现页面中有url中的查询部分,且指向下一个页面

  • python抓取京东商城手机列表url实例代码

    复制代码 代码如下: #-*- coding: UTF-8 -*-'''Created on 2013-12-5 @author: good-temper''' import urllib2import bs4import time def getPage(urlStr):    '''                获取页面内容    '''    content = urllib2.urlopen(urlStr).read()    return content def getNextPag

  • 利用python爬取斗鱼app中照片方法实例

    前言 没想到python是如此强大,令人着迷,以前看见图片总是一张一张复制粘贴,现在好了,学会python就可以用程序将一张张图片,保存下来. 最近看到斗鱼里的照片都不错,决定用最新学习的python技术进行爬取,下面将实现的过程分享出来供大家参考,下面话不多说了,来一起看看详细的介绍吧. 方法如下: 首先下载一个斗鱼(不下载也可以,url都在这了对吧) 通过抓包,抓取到一个json的数据包,得到下面的地址 观察测试可知,通过修改offset值就是相当于app的翻页 访问这个url,返回得到的是

  • Python抓取框架Scrapy爬虫入门:页面提取

    前言 Scrapy是一个非常好的抓取框架,它不仅提供了一些开箱可用的基础组建,还能够根据自己的需求,进行强大的自定义.本文主要给大家介绍了关于Python抓取框架Scrapy之页面提取的相关内容,分享出来供大家参考学习,下面随着小编来一起学习学习吧. 在开始之前,关于scrapy框架的入门大家可以参考这篇文章:http://www.jb51.net/article/87820.htm 下面创建一个爬虫项目,以图虫网为例抓取图片. 一.内容分析 打开 图虫网,顶部菜单"发现" "

  • python抓取网页中链接的静态图片

    本文实例为大家分享了python抓取网页中链接的静态图片的具体代码,供大家参考,具体内容如下 # -*- coding:utf-8 -*- #http://tieba.baidu.com/p/2460150866 #抓取图片地址 from bs4 import BeautifulSoup import urllib.request from time import sleep html_doc = "http://tieba.baidu.com/p/2460150866" def ge

  • Python多进程方式抓取基金网站内容的方法分析

    本文实例讲述了Python多进程方式抓取基金网站内容的方法.分享给大家供大家参考,具体如下: 在前面这篇//www.jb51.net/article/162418.htm我们已经简单了解了"python的多进程",现在我们需要把抓取基金网站(28页)内容写成多进程的方式. 因为进程也不是越多越好,我们计划分3个进程执行.意思就是 :把总共要抓取的28页分成三部分. 怎么分呢? # 初始range r = range(1,29) # 步长 step = 10 myList = [r[x:

随机推荐