php抓取网页title(与抓取预定义好的页面集合不同,抓取一个会带来一个挑战)
优采云 发布时间: 2022-01-14 08:16php抓取网页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属性。
您可以使用这两个类来抓取商店网站,该商店除了产品之外,还可能收录博客文章 或新闻稿。
希望以上知识点能对您有所帮助,也感谢您对脚本之家的支持。