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