【问题标题】:Best ways to scrape website repeatedly [closed]反复抓取网站的最佳方法[关闭]
【发布时间】:2018-03-10 07:04:48
【问题描述】:

我想从包含转机价格的网站(例如航空公司的网站)中提取数据。他们没有 API。 我想让工具填写页面上的表格,包括日期、时间、出发地、目的地。在此之后,必须提交表单,然后显示结果。我想抓取不同选项的日期,并在同一页面上使用不同的数据、时间等值重复相同的过程。

我已经阅读并发现了有关 Scrapy 的信息,但我不确定它是否为此目的有点过分,因为我不需要爬虫,但只想多次抓取同一页面。 Beautifulsoup&Requests 似乎也是一个很好的组合。由于我只有 Selenium 的经验,我想知道什么是我的目的的最佳解决方案? 我正在寻找基于 Python 的解决方案。

【问题讨论】:

  • 我会看看 Selenium!它将允许您编写在网站上填写表格的脚本,然后您可以从那里解析出结果。
  • 我使用过 Selenium,但我正在寻找更大规模的东西。如果可能的话,一个可以同时发出多个请求的工具。
  • 将 selenium 包裹在多个线程中...
  • 您可能还想查看scrapy cloud,它可以使管理许多蜘蛛更容易。您还可以使用Portia 直观地构建简单的scrapy spider。
  • 正如所写,这个问题太基于意见了。如果您要专注于更客观的标准,而不是要求人们为您选择工具,而是询问工具如何比较对您而言重要的既定标准,那么答案可能足够客观,可以切题

标签: python web-scraping beautifulsoup scrapy python-requests


【解决方案1】:

BeautifulSoup & Requests 是一个简单的解决方案:

import requests
from bs4 import BeautifulSoup
import time


def get_soup(url=None, data=None):

    r = requests.post(url, data=data)

    soup = BeautifulSoup(r.text)

    return soup


def scraper(soup):

    # Write your code to scrape the information you need from the page

    return data


def main(url=None, data=None):

    soup = get_soup(url, data)

    data_you_want = scraper(soup)


if __name__ == '__main__':

    url = 'www.somewebsite.com'

    datas = [{'form_name_1': 'form_input_1', 'form_name_2': 'form_input_2', ...}, {'form_name_1': 'form_input_1', ...]

    # Time to wait between each scrape
    wait_time = 5

    for data in datas:
        main(url, data)
        time.sleep(wait_time)

***请注意,航空公司网站等网站可能会阻止爬虫

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 2012-06-20
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多