php抓取网页title(与抓取预定义好的页面集合不同,抓取一个会带来一个挑战)

优采云 发布时间: 2021-12-16 05:11

  php抓取网页title(与抓取预定义好的页面集合不同,抓取一个会带来一个挑战)

  与抓取一组预定义的页面不同,抓取一个网站的所有内链会带来一个挑战,就是你不知道你会得到什么。幸运的是,有几种基本的方法可以识别页面类型。

  按网址

  网站 中的所有博客 文章 都可能收录一个 URL(例如)。

  传递 网站 中存在或缺失的特定字段

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

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

  即使您没有捕获某个标签中的数据,您仍然可以使用该标签。你的爬虫可以寻找类似的东西

  此类元素用于标识产品页面,即使爬虫对相关产品的内容不感兴趣。

  为了跟踪多种页面类型,您需要在 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 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线