为什么报纸3k区分http://cnn.com和http://www.cnn.com?

问题描述

当我运行Python代码

import newspaper
print(len(newspaper.build('http://cnn.com',memoize_articles=False).articles))
exit()

在Python 3中,我得到了输出897(即,报纸3k在域http://cnn.com上发现了897页被视为文章),但是当我运行时

import newspaper
print(len(newspaper.build('http://www.cnn.com',memoize_articles=False).articles))
exit()

(即,附加了www.;其他没有改变),我只得到895。当我在这两个URL之间来回切换时,这些数字是一致的。 www.实际上在URL中有意义吗?如果是这样,为什么在使用报纸3k库时文章计数与这两个URL如此相似?否则,为什么文章计数不完全相同?

解决方法

正如您在下面看到的,www'less资源中代表了两个变体形式的几个url:

  • www
  • 没有www
import newspaper

artcls = newspaper.build('https://cnn.com',memoize_articles=False).articles
urls = [a.url.replace('www.','') for a in artcls]

duplicated = set()

for u in urls:
    if urls.count(u) > 1:
        duplicated.add(u)
        
for d in duplicated:
    print(d)

结果:

https://cnn.com/business/media
https://cnn.com/travel/news
https://cnn.com/travel/article/hong-kong-cbd-cafe-found-wellness-intl-hnk/index.html
https://cnn.com/travel/article/rent-fire-lookout-towers-covid-19/index.html

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...