如何只下载带有wget的html/text,而不下载图像、css等



为了进行研究和培训,我决定使用wget函数来提高解析任何页面的速度。在此之前,我使用了BeautifulSoup、Beautiful Soup('xml'(、纯lxml、selectolax.parser以及urlib和请求,所有这些步骤都可以加快解析器的数据检索速度,但我找到了一种更快的解析大数据的方法,这就是WGET,但问题是因为我正在下载一个包含所有内容的页面,它是完全独立的,我只想下载html,因为100000个页面占用了21GB,存储成本很高,而且通常不需要从元素中获取计数器数据,代码如下:

import os
os.system(f'wget -P C:/test -i C:/test/urls.txt')

我怎么能只过滤html文本或类似的东西。

要检测资源类型,而不下载它,可以使用HEAD谓词。GNUwget--spider选项可以实现这一点,但如果您选择使用它,则需要解析其"输出"以获取类型。我会用urllib.request做检测,然后过滤urls.txt,然后用wget下载选定的。我建议使用以下功能来检测给定URL的类型:

import urllib.request
def detect_content_type(url):
req = urllib.request.Request(url,method='HEAD')
r = urllib.request.urlopen(req)
return r.headers.get_content_type()

使用示例

print(detect_content_type("http://www.example.com")) # text/html

有了这样的功能,您应该能够编写代码,对urls.txt中的每个条目使用它,如果是text/html,则将它附加到另一个文件中。

最新更新