【问题标题】:Multiple scraping flat-file for list of urls用于 url 列表的多个抓取平面文件
【发布时间】:2020-11-08 12:40:59
【问题描述】:

我制作了一个脚本,用于抓取一些商店的页面以寻找缺货商品。它看起来像这样:

import requests
from bs4 import BeautifulSoup
urls = ['https://www.someurla','https://www.someurlb']
for url in urls:
    res = requests.get(url)
    soup = BeautifulSoup(res.content,'html.parser')
    if len(soup.find_all('li',class_='out-of-stock')) > 0:
        print(soup.title)

现在,我想以某种方式使这个列表或 URL 可用于更新,而无需干预这个小脚本。因此,我考虑了一些可以用作平面数据库的分离文件。我认为它比一些关系数据库更合适,因为我真的不需要它。

我想从更有经验的 Python 用户那里获得一些意见,这种方法是否合适,如果这是使用文本或 .py 文件执行此操作的最佳方法。哪些库适合这项任务?另一方面,有更好的方法吗?

【问题讨论】:

  • 使用scrapy。它具有您需要的功能

标签: python web-scraping libraries flat-file


【解决方案1】:

使用简单的 JSON 文件。像这样的:

import os
import json

url_file = '<path>/urls.json'
urls = []

if os.path.isfile(url_file):
    with open(url_file, 'rb') as f:
        urls = json.load(f)['urls']
else:
    print('No URLs found to load')

print(urls)

# hook in your script here...

此特定示例的 JSON 结构:

{
    "urls": [
        "http://example.com",
        "http://google.com"
    ]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 2021-12-13
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    相关资源
    最近更新 更多