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

优采云 发布时间: 2022-01-14 08:16

  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人工客服


线